web-dev-qa-db-ja.com

get_commentsがpost_idと一貫して機能しない

私は別の記事からコメントを得ようとしています。私はpost_idを得て、それがコメントを持っているかどうか確かめるためにチェックをしています

私は毎回現在の記事に対するコメントを得ることができますが、他の記事に関して私は結果が混在しています(私はそれをうまく動かせましたが結果を再現することができません)

これは私が取り組んでいるコードで、他のいくつかの試みがコメントアウトされています。

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>";

それが問題であれば私はpolylangを使用していて、各言語の投稿にすべての言語の選択肢からのコメントを表示しようとしています。それぞれ3つか4つのコメントを持つ2つの投稿(id 21と31)を使っています(これらはget_comments_numberによって見つけられています)。

また、わずかにカスタマイズされたアンダースコアテーマで、comments.phpテンプレートのコメントループの外側にいます。

編集する

いくつかの明確化、私は他のいくつかの要因があったとしても条件のほとんどを説明したいと思いましたが、基本的に私が呼ぶなら:

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

私が電話すれば、私は現在の投稿のコメントを取得します。

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

空の配列を取得します。投稿31に移動すると、31が機能し、21が空の配列を返しますが、これが(post_idを介して)現在の配列以外の投稿を呼び出す方法のようです。 WP codexの最初の例を参照してください

編集2回答:(私は8時間ATMのために私自身の質問に答えることができないので私は今のところこれを追加しています)

それが言語プラグインであることがわかりました...私がコメントを呼ぶとき、それは言語フィルタを加えます:

'lang' => $currentLang

だから私は明示的にそれをオーバーライドする必要がありました:

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

私はなぜ私がこれなしで他のコメントを得ることができたのかまだわかりません。

1
Totoro

結局のところ、それは私の言語プラグイン(polylang)の使用法でした...私がコメントを呼ぶとき、それは言語フィルタを追加します:

'lang' => $currentLang

だから私は明示的にそれをオーバーライドする必要がありました:

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

私はなぜ私がこれなしで他のコメントを得ることができたのかまだわかりません。

1
Totoro