web-dev-qa-db-ja.com

サイトを閲覧するときに保持される2つ(またはそれ以上)の並列(サブ)TLD /サイトアドレスを動的に設定する

私はドメインsub.example.orgの下でドイツのNGOのためのサイトを運営しています。
最近、スイスでのスピンオフにsub.example.chを追加しました。

両方の(サブ)ドメインが同じ物理的な場所、WP installを指しています(notマルチサイト)。

たとえば、sub.example.ch/registersub.example.org/registerの下にあるコンテンツを正しく表示するように設定します。

ただし、スイスの訪問者が通常のオンサイトリンクを使用してサイトを閲覧すると、一般的な設定で定義されている「WordPressアドレス」(または「サイトアドレス」)を使用するため、必然的に「通常の」ドメインになりますget_home_urlまたはget_site_url()(またはそれよりも深さの低いget_bloginfo()の同等物)を介して。

理想的には、訪問者が自分のサイトにアクセスしていたドメインの下でサーフィンし続けたいと思います。それで、私はどういうわけか言及された関数の戻り値をフィルターにかけなければならないと思います。私が知る限り、フィルタは存在しません。

  1. 誰もがこの種のこととまともな解決策についての経験を持っていますか?

  2. これはばかげた考えかもしれません、そして私はそれを最初の場所に行かせるべきですか?

10
Johannes Pille

ホストに対するオプション要求をフィルタリングできます。

下のwp-config.phpの行に…

require_once ABSPATH . 'wp-settings.php';

…以下の行を追加してください。

add_filter( 'pre_option_home', 'set_current_Host' );
add_filter( 'pre_option_siteurl', 'set_current_Host' );

function set_current_Host()
{
    return 'http://' . $_SERVER['HTTP_Host'];
}

add_filter()は以前は利用できませんでした、そしてあなたはあなたのwp-config.phpにそのようなコードを保存するべきです。副作用があるのか​​、それともうまくいかないのかはわかりません。起こらないはずですが、徹底的にテストしてください。

9
fuxia