Implementando o redirecionamento global (redirecionamento automático para todas as páginas que tiveram sua lesma alterada)

3

Digamos que você tenha 20 ou até 50 páginas que precisem de alterações permalink. Como você pode garantir uma formação automática de redirecionamento para todos eles depois?

Em Drupal por exemplo, pode-se instalar o módulo "Redirecionamento global" que cria redirecionamentos automaticamente quando permalinks (Aliases em Drupalês) são alterados.

É necessário até mesmo no WordPress?

    
por JohnDoea 26.02.2016 / 08:58

3 respostas

7
  

Digamos que você tenha 20 ou até 50 páginas que precisem de alterações permalink. Como pode   você garante uma formação de redirecionamento automático para todos eles   depois?

A parte de um URL de postagem que pode ser editada no WordPress é chamada de "slug". Para um URL como enlace , a parte "abc-xyz" seria o slug. A lesma é inicialmente formada a partir do título do post e pode ser editada mais tarde, se desejado.

Agora, quando você altera o slug de uma postagem antes de ser publicada, obviamente não faz diferença alguma. Quando você altera o slug de um post que já foi publicado, o WordPress salva o slug antigo como dados "postmeta", usando uma chave chamada "_wp_old_slug". Ele faz isso para qualquer número de lesmas antigas. Se você alterar três vezes, você terá três lesmas antigas salvas para essa postagem.

Ao seguir um URL antigo, o slug antigo usado não corresponderá ao atual, porque foi alterado. Portanto, a consulta principal do post não encontrará o novo post. Então, o WordPress tem uma função para lidar com isso para lesmas antigas.

Durante a seqüência de inicialização, a função wp_old_slug_redirect() é chamada pela ação template_redirect . Se a consulta normal foi bem-sucedida, a função retorna e não faz nada. No entanto, se a consulta não foi bem-sucedida e um slug foi fornecido na URL, essa função executa uma pesquisa da postmeta procurando uma correspondência entre esses valores slug antigos. Se encontrar uma correspondência, ela obtém o URL correto mais recente (permalink) para essa postagem e envia de volta um redirecionamento 301 para ela.

Portanto, resposta curta à sua pergunta: o WordPress lida com este caso automaticamente. Construído na direita.

Para referência, essa funcionalidade foi adicionada ao WordPress na versão 2.1.

    
por Otto 09.03.2016 / 12:47
2

A maneira mais fácil é ir para o seu htaccess e usar para as 20 páginas.

Redirecionar 301 / página antiga enlace

    
por Jorin van Vilsteren 26.02.2016 / 10:31
1

NOTA: não recompensar a recompensa por mim, dar a Jorin, usar o Redirect 301s no htaccess é normalmente a maneira mais fácil de usar um caso de uso como o seu .

Você pode fazer isso de várias maneiras ...

Usando o htaccess (recomendado)

Redirect 301 /old-permalink http://example.com/new-permalink

ou usando uma declaração RewriteRule se você tiver caminhos permalink comuns

RewriteEngine On
RewriteRule ^some-common-path/(.*)/$ /new-common-path/$1 [L,R=301]

Usando um plug-in:

(ambos são muito bons para o que são)

Como lidar com isso com a lógica do PHP de maneira suja:

function maybe_redirect_request() {

    $redirects = array(

        'old-permalink' => 'new-permalink',
        'old-permalink/page/2' => 'new-permalink/page/2',
        //etc...

    );

    $request_uri = !empty($_SERVER['REQUEST_URI']) ? trim($_SERVER['REQUEST_URI'], '/\') : '';

    if ( $request_uri && array_key_exists($request_uri, $redirects) ) {

        wp_redirect( home_url($redirects[$request_uri]), 301 ); 
        exit;

    }

}

add_action('init', 'maybe_redirect_request'); //or perhaps the "request" filter
    
por userabuser 09.03.2016 / 08:36

Tags