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

10

Я управляю сайтом для немецкой НПО под доменом 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. Может быть, это глупая идея, и я должен отпустить ее в первую очередь?

Йоханнес Пилле
источник

Ответы:

9

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

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

Фуксия
источник
Я проверю это тщательно точно. Теперь.
Йоханнес Пилле
4
12 часов спустя: работает без исключения. То, что ценность должна прийти, $_SERVER['HTTP_HOST']довольно просто, это был бы и мой подход. Пока отвечали, я пытался использовать bloginfo_urlфильтр из плагина. Разве не делать эту работу. Однако, чтобы поместить фильтрацию в файл конфигурации, я бы попытался только после нескольких дней созерцания, если вообще делал. Результат этого решения превзошел мои самые смелые ожидания: не только ссылки разрешаются хорошо, но и учетные данные входа в систему, и даже бэкэнд не задыхается! Awesomeness!
Йоханнес Пилле
1
Оба (под) домена указывают на одно и то же физическое местоположение, WP-установку (не мультисайтовую). Для этого вам необходимо войти в свой хостинг. Когда вы создаете поддомен, домен, вы должны указать корень документа. Здесь выберите тот же путь, что и ваш основной домен с установленным на нем WP. Затем добавьте код. Работая отлично, попробуйте подумать о SEO (канонические и альтернативные теги)
Romain