Configurando uma rede wordpress com domínios de terceiro nível


11

Eu estive pensando em configurar uma instalação de rede WordPress. Tudo correu bem até eu chegar ao ponto em que meu layout de domínio desejado não se encaixa bem.

Eu gostaria de ter um layout da seguinte maneira:

blog. *. stackexchange.com

por exemplo, eu gostaria de ter vários sites em uma rede parecidos com:

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

Acho que eu poderia fazer isso funcionar com algumas regras criativas de reescrita e intervenção manual do DNS, mas eu prefiro ter uma configuração onde eu possa entregar a criação de tudo, menos o DNS, para outra pessoa (já temos um processo para automaticamente criando todos os subdomínios necessários no DNS)

Na minha brincadeira e leitura do WP, realmente quero que os sites sejam o domínio de próximo nível, portanto, no exemplo acima, ele quer que o blog principal do WP esteja no stackexchange.com e os blogs da rede no wordpress.stackexchange.com.

Existe alguma maneira de alcançar o efeito desejado ou devo seguir o caminho de blog.stackexchange.com/$site?


2
Tenho certeza de que você precisará usar regras de reescrita criativa e intervenção manual no DNS. Também tenho certeza de que isso foi planejado para que você não possa entregar a criação de tudo, exceto o DNS, para <del>me</del> <ins> outra pessoa </ins> ... assobia </ sarcasmo> (:
Rebecca Chernoff

Eu adicionei uma recompensa na esperança de que alguém venha com um bom guia passo a passo para que o Zypher possa passar mais tempo se preocupando em manter o SE e menos tempo olhando nos blogs da comunidade.
ninguém

Respostas:


3

Você pode usar o plug-in Mapeador de Domínio para isso. A desvantagem é que você configuraria manualmente cada subblog.


Interessante, ele redireciona ou apenas serve o conteúdo? Acho que o que estou tentando perguntar é que a barra de endereço muda para o usuário final?
Zypher

@Zypher Não, apenas serve o conteúdo.
ninguém

1
Tutorial para usar o plug-in: ottopress.com/2010/… Importante: é sem problemas quando você instala o WP e ativa o plug-in e após a importação de dados ou o sistema de migração; não é tão fácil adicionar esse plug-in depois que o blog tem vida útil antes do mapeamento de domínio. também fornece outros plugins para facilitar o trabalho no back-end do wp. wordpress.org/extend/plugins/networks-for-wordpress
bueltge

devido à falta de alternativa, tenha +150 representantes.
ninguém

1

Você pode fazer isso com um arquivo sunrise.php personalizado. É essencialmente assim que o plug-in de mapeamento de domínio funciona, no entanto, coloca um front-end bastante interessante. Para algo personalizado, você pode escrever um PHP simples para fazer basicamente a mesma coisa.

A essência do multisite envolve descobrir em qual site servir. O plug-in de mapeamento de domínio faz isso criando uma tabela wp_domain_mapping e armazenando as informações nela. Assim, quando recebe uma solicitação para xxx.com, ele olha nessa tabela e vê que isso corresponde ao blog_id 123.

Primeiro, faça uma configuração do WordPress e faça vários sites. Não importa onde realmente mora, porque vamos mudar tudo isso. Para simplificar, eu o colocaria em blog.stackexchange.com e o tornaria um site do tipo subdiretório (esses são mais fáceis). Os subdiretórios criados provavelmente seriam as lesmas. / wordpress, / apple, / o que for.

Então, sim, para começar, você está realmente divulgando o blog em blog.stackexchange.com/wordpress. Considere este o seu ambiente de preparação. Ao criar cada site, você pode fazer algumas coisas aqui até decidir ativar o mapeamento.

Para fazer o mapeamento de domínio, sem o plug-in, você faria algo assim:

Etapa 1: adicione define( 'SUNRISE', 'on' );na parte superior do seu arquivo wp-config.php.

Etapa 2: crie um arquivo sunrise.php no diretório wp-content. Coloque <?phpno topo para começar.

Etapa três: No arquivo sunrise.php, será a sua lógica para determinar qual site carregar.

Você vai basear isso na $_SERVER[ 'HTTP_HOST' ]variável. Como você faz isso exatamente é fácil: como quiser. Se você quiser apenas escrever um regex para procurar '/blog\.(.*)\.stackexchange\.com/'e depois procurar esse bit no banco de dados, faça isso.

Como você está usando a mesma lesma aqui do "subdiretório", não precisa de uma tabela separada. Você pode apenas olhar na tabela principal wp_blogs para encontrar o site que precisa. Algo semelhante a isso:

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

Depois de ter o $ current_blog, você precisará do seguinte 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;

Isso pré-define as variáveis ​​globais $ current_blog e $ current_site em vez de permitir que as funções MU do WordPress o façam.

Isso seria suficiente para colocar o site em funcionamento (depois de fazer com que o DNS apontasse para ele e resolvesse o material da hospedagem virtual), no entanto, a maioria das URLs estáticas usadas no código HTML ainda apontaria para blog.stackexchange.com / wordpress, já que é onde o site realmente estaria. Além disso, a função URL canônica provavelmente não gostaria da URL e também o redirecionaria.

Para solucionar esses problemas, é provável que você também queira predefinir vários dos URLs associados ao site. Coisas como WP_SITEURL e WP_HOME. Além disso, WP_CONTENT_URL, WP_PLUGIN_URL e WPMU_PLUGIN_URL. Isso deve cobrir a maioria dos casos dos URLs que estão sendo ajustados.

Por fim, você deseja definir o 'COOKIE_DOMAIN'. Como você provavelmente deseja que os logons sejam compartilhados por toda a coisa, você pode configurá-lo para stackexchange.com, ou ainda mais, se não desejar que eles sejam compartilhados.

Se você quiser falar sobre a integração do sistema de login stackexchange normal no WordPress, também posso responder perguntas sobre isso, mas seria uma resposta um pouco mais detalhada. :)

Sinta-se à vontade para me enviar um e-mail se quiser mais ajuda com isso. Fico feliz em ajudar: otto no wordpress.org.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.