WordPress : Modifier le Main WP_Comment_Query (commentaires au bas des articles) ?
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 exemple
private $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_args
filtre 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.
0 commentaire