¿Dos (o más) TLD (sub) paralelos que se retienen al navegar por el sitio / establecer dinámicamente la dirección del sitio?

10

Estoy ejecutando un sitio para una ONG alemana bajo el dominio sub.example.org.
Recientemente, agregué sub.example.chpor su spin-off suizo.

Ambos (sub) dominios apuntan a la misma ubicación física, una instalación de WP ( no multisitio).

Lo configuré de modo que sub.example.ch/register, por ejemplo, muestre correctamente el contenido que se encuentra debajo sub.example.org/register.

Sin embargo, cuando un visitante suizo navega por el sitio utilizando enlaces regulares en el sitio, inevitablemente terminará en el dominio "regular", ya que utilizan la "dirección de WordPress" (o "dirección del sitio") como se define en la configuración general , ya sea a través de get_home_urlo get_site_url()(o sus get_bloginfo()equivalentes menos profundos ).

Idealmente , me gustaría que el visitante siga navegando bajo el dominio que utilizó para llegar al sitio. Por lo tanto, supongo que tendría que filtrar de alguna manera el valor de retorno de las funciones mencionadas. Un filtro que, hasta donde yo sé, no existe.

  1. ¿Alguien tiene experiencia con este tipo de cosas y una solución decente a mano?

  2. ¿Es esta una idea tonta y debería dejarla ir en primer lugar?

Johannes Pille
fuente

Respuestas:

9

Puede filtrar las solicitudes de opciones para el host.

En tu wp-config.php debajo de la línea ...

require_once ABSPATH . 'wp-settings.php';

… Agregue las siguientes líneas:

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()no está disponible anteriormente, y debe mantener dicho código en su wp-config.php. No sé si hay efectos secundarios o casos en los que no funciona. No debería suceder, pero pruébelo a fondo.

fuxia
fuente
Lo probaré a fondo con seguridad. Ahora.
Johannes Pille el
44
12 horas después: funciona sin excepción. Que el valor tendría que provenir $_SERVER['HTTP_HOST']es bastante sencillo, ese también habría sido mi enfoque. Mientras se respondía a esto, intentaba utilizar el bloginfo_urlfiltro de un complemento. Did no hacer el trabajo. Sin embargo, para poner el filtro en el archivo de configuración, lo habría intentado después de días de contemplar solo, si es que lo hice. El resultado de esta solución superó mis expectativas más descabelladas: no solo los enlaces se resuelven bien, las credenciales de inicio de sesión también funcionan e incluso el back-end no se ahoga. Awesomeness!
Johannes Pille el
1
Ambos (sub) dominios apuntan a la misma ubicación física, una instalación de WP (no multisitio). Hazlo, debes iniciar sesión en tu servicio de alojamiento. Cuando crea un subdominio, el dominio debe especificar la raíz de un documento. Aquí, seleccione la misma ruta que su dominio principal con WP instalado. Luego, agregue el código. Funciona perfectamente, intenta pensar en SEO (etiquetas canónicas y alternativas)
Romain