Résoudre le problème des pages 404 provenant de la pagination

Problème : des 404 créés à cause de la pagination

Je travaille actuellement sur un site monté sur WordPress. En consultant les données issues de la Search Console, certains pages 404 m’ont interpellé. Elles avaient pour format :

erreur 404 du à la pagination du site sous wordpress
erreur 404 du à la pagination du site sous wordpress

Ce sont des pages dites de pagination.

Cause : modification du nombre d’articles affichés par page.

Ce soucis arrive fréquemment. Vous avez une catégorie qui est composée de 100 articles (ou produits dans le cas d’un e-commerce). Si 20 produits sont affichés par page, vous avez donc 5 pages comme suit : categorie-1/(page1), categorie-1/page/2, categorie-1/page/3, categorie-1/page/4, categorie-1/page/5

Si pour une raison ou une autre vous supprimez 50 articles, les pages categorie-1/page/4, categorie-1/page/5 n’ont plus lieu d’exister. Alors que certains thèmes WordPress, redirigent ces pages vers la page 1, d’autres vont générer des pages 404. Il va donc falloir modifier le code pour obtenir une redirection de ces pages.

Résolution : code à placer dans le fichier function.php

Pour rediriger automatiquement la pagination qui n’est plus existante vers la page 1 il faut placer le code suivant dans le fichier function.php

// 404 PAGINATION
 add_action('template_redirect', 'baw_template_redirect_no_404_pagination' );
 function baw_template_redirect_no_404_pagination() {
 // Récupération de la variable "paged"
 $paged = get_query_var( 'paged' );
 // Si nous sommes sur une page 404 avec une page > à 0
 if( is_404() && $paged > 0 ):
 global $wp_rewrite;
 $url = preg_replace( "#/$wp_rewrite->pagination_base/$paged(/+)?$#", '', $_SERVER['REQUEST_URI'] );
 wp_redirect( $url, 301 );
 die();
 endif;
 }

Il ne vous reste plus qu’à enregistrer et tester.

Ressources

Spread the love