WordPress : Modifier le Main WP_Comment_Query (commentaires au bas des articles) ?

Publié par Jean-Michel le

Mon plugin récupère quelques commentaires au début du post via mon propre WP_Comment_Query. J’enregistre ces identifiants pour pouvoir ensuite modifier la requête WP_Comment_Query et ne pas récupérer ces identifiants.

Lorsque j’utilise le crochet pre_get_comments pour masquer ces identifiants déjà récupérés, ils sont également masqués de ma première requête au début de chaque message. Il défie le point.

$this->loader->add_action( 'pre_get_comments', $plugin_public, 'hide_the_comments' );

public function hide_the_comments( $comment_query ) {

    $comment_query->query_vars['comment__not_in'] = $the_ids_to_hide;
}

Comment pouvons-nous cibler uniquement la requête inférieure, tout comme il y a is_main_query() pour la boucle post ?

Solution n°1 trouvée

  • Créez une variable privée, par exempleprivate $count = 0;
  • Incrémentez-le à chaque exécution de votre fonction
  • Ne cachez pas les commentaires si c’est la première fois que vous l’exécutez 🙂

Solution n°2 trouvée

Si vous avez besoin de cibler le « main » WP_Query_Comments()dans la comments_template()fonction principale, alors le comments_template_query_argsfiltre est disponible depuis WordPress 4.5 :

$comment_args = apply_filters( 'comments_template_query_args', $comment_args );
$comment_query = new WP_Comment_Query( $comment_args );

Voir le ticket #34442 pour plus d’informations et un exemple simple ici.

Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

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