最近、私はあなたがwp-content
ディレクトリに " データベース接続を確立するためのエラーを監視する方法 "からdb-error.phpファイルを含めることができることに気づきました。これは既存のWordPressデータベースエラーメッセージを何かカスタムに置き換えます。私はdb-error.phpのようにリダイレクトをすることについて考えました:
header("Location: http://vader.com/saber.html");
exit();
しかし、私はhttp://vader.com
をサイトのURLに置き換えてポータブルにできるようにしたかったのですが、調査の結果、接続なしでサイトのURLを取得する方法が見当たらず、ディスカッションごとにwpに最小限の変更を加えることを望みました。設定ファイルヘッダーのリダイレクトに使用される可能性があるデータベース接続なしでサイトのURLを取得する方法はありますか?
1つの選択肢は、サイトのURLをwp-config.php
ファイル自体に設定することです。これは、データベースに保存されているsiteurl
オプションを効果的に上書きしますが、クエリを実行せずにURLを参照できることも意味します。
From コーデックス :
Wp-config.phpファイルでサイトのURLを手動で設定することは可能です。
これら2行をあなたのwp-config.phpに追加してください。ここで、 "example.com"はあなたのサイトの正しい場所です。
define('WP_HOME','http://example.com'); define('WP_SITEURL','http://example.com');
その後、通常のテーマでsiteurl
またはhome
オプションをチェックするコードを使用すると、データベースではなく定数から取得されます(したがって、上記のオーバーライドについての注意点)。しかし、デフォルトのエラースクリプトでは、直接WP_SITEURL
を参照してリダイレクトURLを作成できます。
まあDBエラーは要求されたサイトから来なければなりません。それでは、なぜSuperglobal $ _SERVERを使用してHTTPホストを入手しないでください。
header("Location: https://" . $_SERVER['HTTP_Host'] ); //Redirect to root
exit(); //Exit
WordPressは正しいURLが何であるかを「伝える」ために設定に依存しています。これは、データベースオプションまたはそれをオーバーライドするWP_HOME
定数である可能性があります。カスタムサイトの場合、wp-config.php
に定数を設定するのが一般的な方法ですが、DBオプションをまったく気にする必要はありません。
設定なしで 決定 /その情報にする専用のWP API関数(私が覚えている)がないので、一般的なケースはより複雑です。
私がソースで考えることができる最も近いルーチンはRELOCATE
モードが設定されているときです、そしてそれは明示的にURL設定が信頼できず、現在の状態から更新されるべきであることをWPに伝えます.
wp-login.php
の関連コードは以下のとおりです。
if ( defined( 'RELOCATE' ) && RELOCATE ) { // Move flag is set
if ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != $_SERVER['PHP_SELF']) )
$_SERVER['PHP_SELF'] = str_replace( $_SERVER['PATH_INFO'], '', $_SERVER['PHP_SELF'] );
$url = dirname( set_url_scheme( 'http://' . $_SERVER['HTTP_Host'] . $_SERVER['PHP_SELF'] ) );
if ( $url != get_option( 'siteurl' ) )
update_option( 'siteurl', $url );
}
そのため、全体的に設定にアクセスすることなく、残りのオプションは$_SERVER
コンテキストになります。これは、あまり信頼できません。