web-dev-qa-db-fra.com

Requête et tri des commentaires par méta de commentaire personnalisé

J'ai ajouté une fonctionnalité de base "favori/recommander" pour les publications et les commentaires sur un site wordpress sur lequel je travaille.

Je stocke le nombre total de commentaires "J'aime" dans un champ méta de commentaire personnalisé (update_comment_meta). Maintenant, j'aimerais interroger et trier les commentaires en fonction de cette clé méta personnalisée et des valeurs correspondantes afin d'afficher les commentaires les plus populaires.

Idéalement, j'aimerais pouvoir utiliser des paramètres tels que "meta_key" et "order_by = meta_value_num" similaires à WP_Query, mais apparemment, les requêtes de commentaires ne les prennent pas en charge.

Dois-je utiliser une requête écrite personnalisée à la base de données? Si tel est le cas, quelqu'un pourrait-il me donner une première poussée quant à la manière de procéder?

3
ximi

Malheureusement, il n’est pas supporté par les fonctions WordPress applicables pour l’interrogation de commentaires, ce qui est principalement dû à (j’ai le sentiment) pas assez de gens (ou de quiconque) qui le demandent encore.

Je tiens à souligner quelques fichiers de base ici pour aider à comprendre le problème.


  • Commencez par monter comments-template.php , fonction comment_template. Cette fonction interroge les commentaires, puis les ajoute à l'objet WP_Query.

    • Voir la ligne 882
    • Aucun filtre ou action n’interrompt la requête avant qu’elle ne survienne, ni ne la modifie.

  • Suivant comments.php et la fonction get_comments, cette fois, vous ne trouverez aucun support pour les tris personnalisés, par exemple. méta-tri.

    • Voir la ligne 262
    • Le array_intersect recherche uniquement des correspondances; s'il ne fait pas partie de ce tableau de valeurs, il ne sera pas considéré comme une commande valide.

Il existe un filtre dans la fonction de modèle de commentaire qui transmettra tout le tableau de commentaires appelé comments_array (vous verrez ce crochet dans le premier fichier auquel je suis lié à la ligne 892).

Vous pouvez parcourir le tableau de commentaires récupérés et créer un nouveau tableau trié en fonction de vos métadonnées (vous aurez probablement besoin d'une requête personnalisée pour aller chercher les métadonnées si vous voulez être aussi efficace que possible). .

Je peux ajouter un exemple de tableau jonglant plus tard si vous en avez besoin.

1
t31os