Categorias amigáveis no WordPress – É bom para SEO!
Uma das questões que sempre vem envolvendo SEO e WordPress é o slug das categorias, tirar ou não tirar? Eis a questão…
Independentemente de qual for a sua posição, hoje irei lhe mostrar (ou ensinar) como ajustar o slug das categorias no WordPress, para se encaixar a sua necessidade. Vejamos as opções que você pode tomar:
Opção 1 – Não remover o slug base das categorias, apenas traduzir o mesmo
O maior ponto defendido por esta opção, é que com ela, o usuário será mais amigável com a categoria, porque vai estar escrito na url “categoria”… bom você entendeu!
Há também a questão que, se a categoria ter o mesmo nome – slug – de uma página o outro método (que vou falar mais abaixo), fica em desvantagem porque terá problemas no rewrite do WordPress pra identificar quem é quem… Eu já mato essa “questão” aqui de primeira: Você terá uma categoria no WordPress com o nome de “contato”? O problema aqui é planejamento… mas cada caso é um caso né :).
Para fazer a tradução é bem simples. No admin, vá para Configurações > Links Permanentes. Encontre o campo Base da categoria e digite o slug desejado – “categoria”. Pronto!
Vamos para a segunda posição – a que mais me agrada.
Opção 2 – Remover o slug base das categorias
A vantagem em remover o slug base das categorias é que, para SEO, é mais vantajoso porque:
- Irá encurtar a URL, removendo informação “desnecessária”.
- “Ajuda” na hierarquia da URL dos posts.
- Será mais fácil de memorizar e digitar – quem irá sentir é o usuário.
- …
Enfim a URL irá ficar mais amigável para SEO. Para remover o slug base das categorias, segue o código abaixo. Assim você não irá precisar de plugins para fazer o serviço sujo. Em seu template, abra o arquivo functions.php e insira o seguinte código:
/** * Remove o slug base das categorias */ function remove_slug_categoria_wordpress() { global $wp_rewrite; /** * Remove base das categorias */ $wp_rewrite->extra_permastructs['category']['0'] = '%category%'; //Força diretamente $wp_rewrite->flush_rules(); } add_filter('init', 'remove_slug_categoria_wordpress'); /** * Refaz as regras para as categorias, previnindo incompatibilidade * @param array $category_rewrite */ function fixa_categorias_rewrite_rules($category_rewrite) { global $wp_rewrite; /** * Checa se tem a base para paginação * @since WP 3.1.0 */ if(!isset($wp_rewrite->pagination_base)) $wp_rewrite->pagination_base = 'page'; $category_rewrite = array(); //Reseta o rewrite $categorias = get_categories(array('hide_empty' => FALSE)); /** * Processa cada categoria */ foreach($categorias as $categoria){ $category_nicename = $categoria->slug; /** * Checa se tem parente para a categoria */ if($categoria->parent != 0 ) $category_nicename = get_category_parents($categoria->parent, FALSE, '/', TRUE). $category_nicename; $category_rewrite['('.$category_nicename.')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]'; $category_rewrite['('.$category_nicename.')/'. $wp_rewrite->pagination_base. '/?([0-9]{1,})/?$'] = 'index.php?category_name=$matches[1]&paged=$matches[2]'; $category_rewrite['('.$category_nicename.')/?$'] = 'index.php?category_name=$matches[1]'; } return $category_rewrite; } add_filter('category_rewrite_rules', 'fixa_categorias_rewrite_rules'); /** * Redireciona as url de categorias antigas do WordPress */ function fixa_urls_categorias_antigas(){ if(preg_match('//(category/)(.+)/', $_SERVER['REQUEST_URI'], $matches)){ $url = get_bloginfo('url') . '/' . $matches['2']; header('Location: '. $url, 301); exit(); } } add_action('init', 'fixa_urls_categorias_antigas', 1);
A primeira função, faz a alteração do slug categorias de forma bem simples… Depois é “reiniciado” as regras de rewrite do WordPress, através da função flush_rules().
Logo após, na segunda função, é refeito o rewrite das categorias. É necessário refazer as regras de categorias, para que não haja confusão entre páginas e categorias no WordPress.
A terceira e última função, cuida do redirecionamento 301 para URLs antigas. Não há o que discutir…
Se preferir por um plugin use o WP No Category Base.
Opção 3 – Não fazer nada
Se você está fazendo um website “pros grigos”, eu até concordo :).
Concluindo…
Caso você não tenha nenhuma posição quanto ao que fazer com suas categorias, ai está as mais discutidas e você pode optar por uma delas. Espero que tenham gostado e que eu tenha ajudado algúem também!
Estou ficando um pouco afastado do blog, por não ter tempo o suficiente para os posts, mas no twitter estou mandando bala com vários artigos interessantes que vou encontrando, se quiser acompanhar é so me seguir no twitter.
Até a próxima.
1 Comentário
André disse:
18 de dezembro de 2015 às 17:02
Olá!
Segui das dicas do seu post, o qual achei muito interessante e últil, porém, está me mostrando um erro:
Warning: preg_match(): Unknown modifier ‘(‘ in C:\xampp\htdocs\manancial\wp-content\themes\travelify-child\library\functions\functions.php on line 546
Grato!