Configurar una red de wordpress con dominios de tercer nivel

11

He estado buscando configurar una instalación de red de WordPress. Todo ha ido bastante bien hasta que llegué al punto en que mi diseño de dominio deseado no encaja bien.

Me gustaría tener un diseño de la siguiente manera:

blog. *. stackexchange.com

así, por ejemplo, me gustaría tener varios sitios en una red que se vean así:

blog.wordpress.stackexchange.com
blog.apple.stackexchange.com
blog. $ site.stackexchange.com

Yo creo que pude conseguir este trabajo con algunas reglas de reescritura creativa, y la intervención manual de DNS pero preferiría tener una configuración en la que puedo mano de la creación de todo, pero el DNS a otra persona (ya tenemos un proceso de forma automática creando todos los subdominios necesarios en DNS)

Desde mi lectura y lectura, WP realmente quiere que los sitios sean el dominio del siguiente nivel, por lo que en mi ejemplo anterior, quiere que el blog principal de WP esté en stackexchange.com y que los blogs de la red estén en wordpress.stackexchange.com.

¿Hay alguna forma de lograr el efecto deseado o debería seguir el camino de blog.stackexchange.com/$site?

Zypher
fuente
2
Estoy bastante seguro de que tendrá que usar reglas creativas de reescritura e intervención manual de DNS. También estoy bastante seguro de que esto es un diseño para que no pueda pasar la creación de todo excepto el DNS a <del>me</del> <ins> alguien más </ins> ... silba </ sarcasmo> (:
Rebecca Chernoff
Agregué una recompensa con la esperanza de que alguien venga con una buena guía paso a paso para que Zypher pueda pasar más tiempo preocupándose por mantener SE y menos tiempo buscando en los blogs de la comunidad.
nadie

Respuestas:

3

Podrías usar el complemento Domain Mapper para esto. El inconveniente es que habría configurado manualmente cada subblog.

Wietse Venema
fuente
Interesante, ¿hace una redirección o solo sirve el contenido? Supongo que lo que estoy tratando de preguntar es si la barra de direcciones cambia para el usuario final.
Zypher
@Zypher No, solo sirve el contenido.
nadie
1
Tutorial para usar el complemento: ottopress.com/2010/… Importante: es sin problemas, cuando instala WP y activa el complemento y después de esta importación de datos o sistema de moigrate; No es tan fácil agregar este complemento después de que el blog tenga una vida anterior a la asignación de dominios. también proporciona otros complementos para facilitar el trabajo en el backend de wp. wordpress.org/extend/plugins/networks-for-wordpress
bueltge
debido a la falta de alternativas, tiene +150 rep.
nadie
1

Puede hacer esto con un archivo sunrise.php personalizado. Esta es esencialmente la forma en que funciona el complemento de mapeo de dominio, sin embargo, le pone un bonito front-end. Para algo personalizado, puede escribir un PHP simple para hacer básicamente lo mismo.

La esencia de multisitio implica averiguar qué sitio servir. El complemento de mapeo de dominios hace esto creando una tabla wp_domain_mapping y almacenando la información allí. Por lo tanto, cuando recibe una solicitud de xxx.com, se ve en esa tabla y ve que corresponde al blog_id 123.

Primero, haga una configuración de WordPress y haga que sea multisitio. No importa dónde viva realmente, porque vamos a cambiar todo eso. Para simplificar, lo pondría en blog.stackexchange.com y lo convertiría en un sitio de tipo subdirectorio (son más fáciles). Los subdirectorios creados probablemente serían las babosas. / wordpress, / apple, / lo que sea.

Entonces, sí, para empezar, lo está haciendo en vivo en blog.stackexchange.com/wordpress. Considere este su entorno de ensayo. Cuando crea cada sitio, puede hacer cosas aquí hasta que decida activar el mapeo.

Para hacer el mapeo de dominio usted mismo, sin el complemento, haría algo como esto:

Paso uno: agregue define( 'SUNRISE', 'on' );a la parte superior de su archivo wp-config.php.

Paso dos: crea un archivo sunrise.php en el directorio wp-content. Poner <?phpen la parte superior para empezar.

Paso tres: En el archivo sunrise.php será tu lógica para determinar qué sitio cargar.

Vas a basar esto en la $_SERVER[ 'HTTP_HOST' ]variable. Cómo hacerlo exactamente es fácil: como quiera hacerlo. Si solo desea escribir una expresión regular para buscar '/blog\.(.*)\.stackexchange\.com/'y luego buscar ese bit en la base de datos, puede hacerlo.

Como está usando la misma babosa aquí que el "subdirectorio", no necesita una tabla separada. Puede buscar en la tabla principal de wp_blogs para encontrar el sitio que necesita. Algo similar a esto:

$current_blog = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} WHERE path = '/wordpress/' LIMIT 1" );

Una vez que tenga $ current_blog, necesitará el siguiente código:

$current_blog->domain = $_SERVER[ 'HTTP_HOST' ];
$current_blog->path = '/';
$blog_id = $current_blog->blog_id;
$site_id = $current_blog->site_id;
$current_site = $wpdb->get_row( "SELECT * from {$wpdb->site} WHERE id = '{$current_blog->site_id}' LIMIT 0,1" );
$current_site->blog_id = $current_blog->blog_id;

Esto predefine las variables globales $ current_blog y $ current_site en lugar de dejar que las funciones MU de WordPress lo hagan.

Esto sería suficiente para poner el sitio en funcionamiento (después de hacer que su DNS lo señale y ordenar las cosas del alojamiento virtual), sin embargo, la mayoría de las URL estáticas utilizadas en el código HTML todavía apuntarían a blog.stackexchange.com / wordpress, ya que ahí es donde realmente estaría el sitio. Además, la función de URL canónica probablemente no le guste y también lo redirigirá a usted.

Para solucionar estos problemas, es probable que también desee predefinir varias de las URL asociadas con el sitio. Cosas como WP_SITEURL y WP_HOME. Además, WP_CONTENT_URL, WP_PLUGIN_URL y WPMU_PLUGIN_URL. Eso debería cubrir la mayoría de los casos de las URL que se están ajustando.

Finalmente, querrás configurar el 'COOKIE_DOMAIN'. Como es probable que desee que los inicios de sesión se compartan en todo el proceso, puede configurarlo en stackexchange.com, o incluso más si no desea que se compartan inicios de sesión.

Si desea hablar sobre la integración del sistema normal de inicio de sesión de stackexchange en WordPress, también puedo responder preguntas sobre eso, pero sería una respuesta un poco más detallada. :)

No dude en enviarme un correo electrónico si desea obtener más ayuda con esto. Me alegro de ayudar: otto en wordpress.org.

Otón
fuente