web-dev-qa-db-fra.com

Une publication simple paginée ne redirige pas vers l'URL principale après la suppression de la pagination

J'ai utilisé

<!--nextpage-->

( Codex ) pour paginer (diviser) quelques messages simples. Maintenant, j'ai supprimé toutes les parties HTML page suivante des articles. tout semble bien. Malheureusement, les anciennes urls aiment

sample.com/tipps-for-me/2

sample.com/tipps-for-me/3

sample.com/tipps-for-me/4

...

ne pas rediriger vers l'URL principale sample.com/tipps-for-me. Au lieu de cela, il affiche exactement le même contenu (entier) de l’URL principale (sample.com/tipps-for-me) lorsque je regarde sample.com/tipps-for-me/2, sample.com/tipps-for-me/3, sample.com/tipps-for-me/4 et ainsi de suite.

Je n'utilise aucun plugin de redirection ni aucune fonction de redirection nulle part. Une idée de comment résoudre ce problème?

3
NewUser

MODIFIER

J'ai joué avec une solution possible à votre problème. Nous pouvons essayer ce qui suit

  • Ajouter notre propre action à template_redirect où nous faisons ce qui suit

    • Vérifiez que la demande en cours est une page de publication paginée et que la balise <!--nextpage--> ne figure pas dans le contenu de la publication.

    • Si tout se passe bien dans notre état, nous ferons une redirection manuelle vers la première page du message.

Voici le code:

add_filter( 'template_redirect', function()
{
    if (    is_single() 
         && false === strpos( get_queried_object()->post_content, '<!--nextpage-->' )
         && get_query_var('page') 
    ) {
        wp_redirect( get_permalink( get_queried_object_id() ) );
        die;
    }
});

NOTES IMPORTANTES

Cela redirigera également la page de publication individuelle paginée actuelle vers la première page, même si nous utilisons le filtre content_pagination. Le code ne prend en compte que la balise <!--nextpage-->; vous devrez donc vous assurer que vous ne paginerez pas un seul message avec une autre méthode que la balise <!--nextpage-->.

FIN D'EDIT

RÉPONSE ORIGINALE

Je suis à peu près sûr que cela nécessitera beaucoup d'investigations et de tests, d'assermentation et de réécriture du code pour que cela fonctionne.

Malheureusement, lorsque vous avez une URL telle que sample.com/tipps-for-me/4, WordPress a toujours accepté cette structure d'URL comme valide, même si je me souviens bien de sa rencontre avec la version 3.3.1, même si une publication ne comporte qu'une seule page.

WordPress 4.4 a vu le nouveau filtre content_pagination ajouté et le code suivant à redirect_canonical

$next = '<!--nextpage-->';
if ( $p && false !== strpos( $p->post_content, $next ) && ! empty( $this->query_vars['page'] ) ) {
    $page = trim( $this->query_vars['page'], '/' );
    $success = (int) $page <= ( substr_count( $p->post_content, $next ) + 1 );
}

Si vous avez la balise <!--nextpage--> dans un message, toutes les pages après la dernière page après la balise <!--nextpage--> seront 404 redirigées vers la première page. C’est vraiment la seule fois où vous aurez du succès avec des URL telles que sample.com/tipps-for-me/4 lorsque cette page est une page située après la dernière page après la balise <!--nextpage-->. Si nous supprimons la balise <!--nextpage-->, nous pourrons toujours entrer n'importe quelle URL sans être redirigés en tant que version antérieure à WordPress 4.4.

Ce morceau de code crée cependant d’autres problèmes que j’ai soulevés ( un ticket de traçabilité non résolu ) pour, et entre moi et @birgire nous avons traité le problème dans la question suivante il y a une semaine ou deux

J'ai demandé dans le ticket de transaction mentionné de supprimer le code de redirect_canonical() afin d'éviter les nouveaux problèmes qu'il créait jusqu'à ce que nous trouvions une solution solide pour gérer la pagination sur des publications uniques.

Je pense que le nouveau filtre content_pagination rend vraiment très difficile cette tâche, car nous devrons trouver un moyen de gérer correctement les pages ajoutées via le filtre avec et sans la balise <!--nextpage-->. Avant WordPress 4.4, les utilisateurs utilisaient le filtre the_post pour ajouter une page supplémentaire à un message en plus de la balise <!--nextpage-->, ce qui ajoute encore plus de problèmes à traiter de manière à ne pas endommager les sites qui restent s'appuyant sur des méthodes valides plus anciennes

DE CONCLURE

Il n'y aura certainement pas de solution à cela dans un proche avenir. Comme beaucoup d'autres bogues existants comme tous les articles renvoyés par WP_Query sur un terme ou une taxonomie non valide, sur une soumission de recherche vide ou sur la suppression des noms de termes dans un tax_query, il n'existe aucune solution concrète pour résoudre ces problèmes. Mon pari est que certains de ces problèmes ne seront jamais résolus et resteront jusqu'à la fin des jours.

Du point de vue du référencement, cela n’a aucun impact, il n’ya donc pas de quoi s’inquiéter.

4
Pieter Goosen