Quando postagens já estão indexadas pelos mecanismos de busca, como Google e Bing, há algum tempo fica complicado mudar um blog do WordPress de domínio.
No meu caso eu precisava mudar apenas alguns posts de categorias específicas para um outro subdomínio do meu site. O objetivo era redirecionar os posts relacionados com artes para o meu novo blog sobre arte.
Depois de pesquisar um pouco acabei chegando em uma solução razoável.
Criei o novo blog com WordPress, importei o conteúdo das categorias específicas para o mesmo e coloquei em um novo subdomínio.
No meu blog atual, este que você está lendo agora, no arquivo functions.php do template adicionei o código abaixo.
add_action('template_redirect', 'redirect_category_posts'); function redirect_category_posts() { global $post; if (is_single($post->ID) && ( in_category('ilustracoes', $post) || in_category('ilustracao-em-acao', $post) || in_category('hqs', $post) || in_category('ecomic-hqs', $post) || in_category('tailer-hqs', $post) || in_category('video', $post) || in_category('quick-sketch', $post) )) { $new_url = str_replace('http://mbeck.com.br', 'http://arte.mbeck.com.br', get_permalink($post->ID)); wp_redirect($new_url, 301); exit; } }
Linha por Linha
A primeira linha adiciona uma nova ação ao template.
add_action('template_redirect', 'redirect_category_posts');
Em seguida eu crio a função e utilizo a global $post do WordPress. Nela teremos os dados da publicação.
function redirect_category_posts() { global $post;
Adiciono uma condição para verificar se estamos em um post único através do $post->ID. Para verificar se encaixa em uma das categorias especificadas uso a função in_category do WordPress.
if (is_single($post->ID) && ( in_category('ilustracoes', $post) || in_category('ilustracao-em-acao', $post) || in_category('hqs', $post) || in_category('ecomic-hqs', $post) || in_category('tailer-hqs', $post) || in_category('video', $post) || in_category('quick-sketch', $post) )) {
Em seguida monto a URL que será utilizada para o redirecionamento substituindo o domínio antigo pelo novo com a função str_replace do PHP. Para pegar o link permanente do post eu uso a função get_permalink do WordPress.
$new_url = str_replace('http://mbeck.com.br', 'http://arte.mbeck.com.br', get_permalink($post->ID));
Lembrando que quando criei outro blog com o WordPress e importei o conteúdo do antigo eu utilizei exatamente o mesmo formato de URL (permalink) para os posts do novo blog que eu utilizava no antigo.
Para fechar, utilizo a função wp_redirect do WordPress, com um código 301 (código HTTP que significa movido permanentemente), e termino com um exit.
wp_redirect($new_url, 301); exit; } }
E voilá! Está funcionando como o esperado.
Se ficou alguma dúvida comente abaixo.
Nos vemos na próxima.
Uma resposta em “Redirecionando posts para subdomínio no WordPress”
Só quero agradecer pelo conteúdo incrível, custou para achar um código que funcionasse. Valeuu!