Détecter une page de commentaire sur WordPress

Publié le 21 mars 2013 Développement WordPress

Après une petite pause dans les articles et un TekNSEO plus que réussi, voici une petite fonction WordPress bien utile : détecter si l’on est sur une page de commentaire

Une page de quoi ?

Dans les réglages de WordPress, vous avez la possibilité d’activer une option relative aux commentaires de WordPress. Celle-ci permet de diviser les commentaires d’un article en sous-pages.

Administration de WordPress : pages de commentaires
Le menu d’administration pour activer les pages de commentaires

Je ne recommande pas cette option pour des problématiques de référencement naturel. Pourquoi ? Tout simplement pour ces deux raisons :

  • vous dupliquez le contenu de votre article qui est recopié sur chaque page de commentaire ;
  • vous diminuez la pertinence de l’article principal en « déplaçant » des contenus pertinents sur de nouvelles URL.

Certes, cela peut (parfois) améliorer l’ergonomie de votre site, ou encore réduire le temps de chargement, mais cela vous portera préjudice plus qu’autre chose.

La détection de la page de commentaire

Cependant, si vous êtes amenés à activer ce genre d’options, vous pourriez avoir besoin de détecter la présence de ce type de contenus. La raison en est simple : les pages de commentaires utilisent le même template que celui de l’article (ou du post_type), c’est à dire single.php. C’est justement cela qui provoque la duplication de votre contenu entre la page principale de l’article et toutes les sous-pages de commentaires.

Il n’existe pour le moment pas de tag conditionnel ni de fichier de template pour savoir si on se trouve sur ce type de contenus. Pour détecter le fait d’être sur une page de commentaire sur WordPress, voici un code très simple à utiliser :

/**
    Détecter une page de commentaire sur WordPress
    */
$cpage = get_query_var( 'cpage' );
if ( is_singular() && $cpage > 0 ){
    // Votre code
}

Le code fonctionne pour les articles, les pages, les attachments ainsi que tous les post_types que vous auriez pu créer.

Pourquoi faire ?

Avec ce petit bout de code, vous saurez donc si vous vous trouver sur une page de commentaire. Libre à vous ensuite de modifier l’affichage du contenu en fonction, par exemple pour :

  • modifier le contenu pour ne plus dupliquer l’article en lui-même ;
  • modifier l’affichage ;
  • rajouter du contenu unique ;

Cela vous évitera de nombreuses problématiques de duplications de contenus…

This is WordPress
This is WordPress

Rassurez-vous par contre : si cette option est désactivée, WordPress fera naturellement une redirection 301 des pages de commentaires vers l’article associé.

Daniel Roch

Conférencier, auteur, consultant et expert SEO WordPress, CEO de SeoMix et SEOKEY

6 Commentaires

Arnaud Le 21 mars 2013 à 9h17

Bonjour Daniel,

Après vérification, option désactivée sur mon site :)
Mais je ne savais pas qu’elle était disponible, en faite je n’en n’avais pas entendu parlé et c’est vrai qu’une fois de plus se pose le problème de duplication de contenu sur WordPress, ou plutôt du bonne utilisation du CMS par nous-même.

Bruno Le 21 mars 2013 à 12h02

Bonjour,

Au risque de passer 5 minutes pour un idiot, je ne suis pas sûr d’avoir tout-à-fait compris l’intérêt de la manœuvre.
C’est bien pour un blog sur lequel les commentaires étaient divisés en plusieurs pages et qu’on a décidé de faire marche arrière, non?

Merci d’avance,

Bruno

Julio Potier (BoiteAWeb.fr) Le 21 mars 2013 à 13h38

Hello

J’aime bien ce genre d’astuce car effectivement, WordPress ne détecte pas ce template, pas de tag conditionnel. Peut-être en faudrait-il un ?
Par contre, ce qui manque ici c’est un cas concret et utile.
Alors je me permets de te le donner, une astuce entière. Le code suivant est à mettre dans un « mu-plugins » (voir http://www.boiteaweb.fr/ajouter-astuces-site-6606.html) :

Dans le cas cité par l’article, c’est à dire une pagination de mes commentaires, je vais dire à WordPress qu’en fait, j’aimerais qu’il utilise le template « paged.php » de mon thème. Je pourrais très bien lui dire d’utiliser « page.php » ou même pousser plus loin en lui demandant d’utiliser une page avec un modèle perso comme « page-perso.php ».
J’utilise le hook « template_include » qui intervient juste après le choix que WordPress a fait, mais AVANT d’inclure son choix. Ici nous sommes donc encore dans « single.php ». Avec le code de Daniel posé dans le hook, je peux affecter dans $template une nouvelle valeur.
Ici j’ai mis « get_paged_template() » qui retournera « paged.php », ce qui revient à faire « get_query_template(‘paged’); » dont vous pouvez faire « get_query_template(‘page-perso’); » (pas de .php !)
Voilà, maintenant, vous savez détourner un template ;)

lereferenceur Le 21 mars 2013 à 17h25

@Bruno : C’est dans le cas où tu actives l’option destiné à divisé les commentaires en page.
Admettons tu as 2 pages de commentaires. Avec ce code, tu peux modifier le contenu (par exemple) par rapport à ta page principale et ainsi éviter le DC. (ERnfin si j’ai bien compris)

Mais bon je ne vois pas trop quoi et comment modifier mon contenu pour que cela reste logique pour l’internaute.

En tout cas ce code peut en aider plus d’un. Pour ma part je n’active pas cette option.

Greg Le 21 mars 2013 à 20h14

Ma petite pierre à l’édifice :

Ce petit bout de code ajoute la meta robots « noindex,nofollow » sur les pages de commentaires. Au préalable je m’assure qu’elle n’a pas déjà été ajoutée par WordPress lui-même. Ainsi, seule la page principale de l’article serait indexée (si Google écoute ce qu’on lui dit ^^).

Ton avis Daniel, bien ou pas bien ?

Laurent Matignon Le 28 mars 2013 à 16h32

Sur un de mes sites WordPress j’avais eu un gros souci, l’article en question avait reçu énormément de commentaires… et ne pouvait tout simplement plus se charger. J’avais donc été contrait d’activer l’option de pagination des commentaires. Franchement, j’avais joué à l’apprenti-soricer avec ce site et je n’ai jamais creusé le pourquoi du comment le site ne pouvait pas encaisser un article avec une cinquantaine de commentaires, mais il est clair que je rejoins l’unanimité ici, il vaut mieux ne pas activer cette option.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *