Два (или более) параллельных (суб) TLD, которые сохраняются при серфинге на сайте / динамически задают адрес сайта?

Я запускаю сайт для немецкой НПО под доменом sub.example.org .
Недавно я добавил sub.example.ch для его швейцарского выделения.

Обе (суб) домены указывают на одно и то же физическое местоположение, WP-установка ( не многосетевая).

У меня есть настройка, так что sub.example.ch/register , например, будет правильно показывать содержимое, найденное в sub.example.org/register .

Однако, когда швейцарский посетитель просматривает сайт, используя регулярные ссылки на сайте, он или она неизбежно попадают в «обычный» домен, так как они используют «адрес WordPress» (или «адрес сайта»), как это определено в общих настройках , либо через get_home_url либо get_site_url() (или их менее глубокие get_bloginfo() эквиваленты).

В идеале , я бы хотел, чтобы посетитель продолжал заниматься серфингом под доменом, к которому он или она добирался до сайта. Следовательно, я полагаю, что мне придется каким-то образом фильтровать возвращаемое значение указанных функций. Фильтр, который, насколько я знаю, не существует.

  1. Есть ли у кого-нибудь опыт такого рода вещей и достойное решение?

  2. Возможно, это глупая идея, и я должен отпустить ее в первую очередь?

Solutions Collecting From Web of "Два (или более) параллельных (суб) TLD, которые сохраняются при серфинге на сайте / динамически задают адрес сайта?"

Вы можете отфильтровать запросы опций для хоста.

В вашем 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 . Я не знаю, есть ли побочный эффект или случаи, когда он не работает. Не должно произойти, но тщательно протестируйте его.