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?
Respostas:
Você pode usar o plug-in Mapeador de Domínio para isso. A desvantagem é que você configuraria manualmente cada subblog.
fonte
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
<?php
no 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:
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.
fonte