web-dev-qa-db-fra.com

get_comments ne fonctionne pas de manière cohérente avec post_id

J'essaie d'obtenir des commentaires d'un autre post. Je reçois le post_id et vérifie s'il contient des commentaires.

Je peux obtenir les commentaires pour le message actuel à chaque fois, mais pour l'autre message, j'obtiens des résultats mitigés (je l'ai obtenu mais je ne parviens pas à reproduire les résultats).

Voici le code sur lequel je travaille avec quelques tentatives alternatives commentées:

if(get_comments_number($getLangsPostID) > 0){
    //echo "<pre>This post id is ".$thisPostID." The other language post id is (".$getLangsPostID."):";
    //var_dump($getLangsPostID);
    $altLangReq = array(
        'post_id' => $getLangsPostID // have tried with and without trailing comma
    );

    //$langComments = get_comments($altLangReq);
    $langComments = get_comments('post_id='.$getLangsPostID);

    echo "<p>Current post ($thisPostID), request for post id (".$getLangsPostID.") is:<pre>";
    var_dump($langComments);
    //$x = get_comments('post_id=31'); // hard coded also fails
    $x = get_comments(array('post_id'=>31));
    var_dump($x);
    echo "</pre></p>";

Si cela compte, j'utilise polylang et j'essaie de montrer les commentaires de toutes les variantes linguistiques sur chaque langue. J'utilise deux articles (id 21 et 31) qui ont 3 ou 4 commentaires chacun (ils sont trouvés par get_comments_number.

De plus, je suis en dehors de la boucle de commentaires sur le modèle comments.php dans le thème de soulignement légèrement personnalisé.

Modifier:

Quelques éclaircissements, je voulais décrire la plupart des conditions car il y avait un autre facteur, mais fondamentalement, si j'appelle:

var_dump(get_comments('post_id=21')); // 21 is the current post

Je reçois les commentaires des publications actuelles, si j'appelle:

var_dump(get_comments('post_id=31')); // 31 is a different post

Je reçois un tableau vide, si je vais à post 31, puis 31 fonctionne et 21 renvoie un tableau vide mais cela semble être le moyen d'appeler des publications autres que l'actuel (via le post_id). Voir le premier exemple dans le WP codex

Edit 2 Réponse: (J'ajoute ceci pour l'instant car je ne peux pas répondre à ma propre question pendant 8 heures à un guichet automatique)

Il s'avère que c'était le plugin de langue ... Lorsque j'appelle les commentaires, il ajoute un filtre de langue:

'lang' => $currentLang

Je devais donc explicitement passer outre cela:

get_comments(array('post_id'=>31, 'lang' => $targetLang));

Je ne sais toujours pas pourquoi j'ai parfois pu obtenir les autres commentaires sans cela.

1
Totoro

Il s’est avéré que c’était mon utilisation du plugin de langage (polylang) ... Lorsque j’appelle les commentaires, il ajoute un filtre de langage:

'lang' => $currentLang

Je devais donc explicitement passer outre cela:

get_comments(array('post_id'=>31, 'lang' => $targetLang));

Je ne sais toujours pas pourquoi j'ai parfois pu obtenir les autres commentaires sans cela.

1
Totoro