2016-05-13 8 views
2

によってポストにコメントをフィルタリングする方法。これまでは、Googleで回答を見つけようとしましたが、誰かがコメントフォームにコメントを追加したときにメタキー/値を割り当てる方法しか見つけられませんでした。彼らは唯一の特定のメタキーとのコメントを一覧表示するように、テーマののfunctions.php私は、彼らが唯一の特定の<strong>meta_key</strong>と<strong>meta_value</strong>とのコメントを一覧表示するようにワードプレスの記事にコメントリストを作成しようとしている特定のコメントメタ値

<?php 

add_action('comment_post', function($comment_id) { 
    add_comment_meta($comment_id, $my_meta_key, $my_meta_value); 
}); 

は今、私は理解できないものを、どのように私は、WordPressの投稿コメントをフィルタリング作るのですされており、私は彼らにしたい。

テーマをアンダースコアで作成しました。コメントはwp_list_comments()機能を使用してcomments.php内にリストしています。

+0

テーマから 'comments_template()'関数を呼び出していますか? – birgire

+0

はい、single.phpとpage.phpからcomments_template()を呼び出しています。 – 58YtQ2H83m17838963l61BU07Y8622

+1

[this](http://stackoverflow.com/a/37099476/2078474)が役立つかもしれません。 – birgire

答えて

1

ここで(ワードプレスのバージョンで利用可能な4.5+)comments_template_query_argsフィルターを通して、comments_template()で、メインコメントクエリを変更する方法の例です:あなたはあなたのにメタクエリを調整

/** 
* Filter non-threaded comments by comment meta, in the (main) comments template 
*/ 
add_filter('comments_template_query_args', function($comment_args) 
{ 
    // Only modify non-threaded comments 
    if( isset($comment_args['hierarchical']) 
     && 'threaded' === $comment_args['hierarchical'] 
    ) 
     return $comment_args; 

    // Our modifications 
    $comment_args['meta_query'] = [ 
     [ 
      'key'  => 'some_key', 
      'value' => 'some_value', 
      'compare' => '=' 
     ] 
    ];   

    return $comment_args; 
}); 

ニーズ。この例では、PHP 5.4+と仮定しています。

+0

上記のサンプルを使用してみましたが、エラーが発生します。構文エラー:構文エラー、予期しない '$ comment_args'(T_VARIABLE)が ... PHPバージョン5.6.3のWindowsではxampppを使用しています。このエラーは、$ comment_args ['meta_query'] = [is。何がうまくいかなかったのだろうか? EDIT:コードフォーマットを修正しようとしましたが、今はエラーが発生していません。私はコードを試した後に戻ってきます。 – 58YtQ2H83m17838963l61BU07Y8622

+0

ps:これはテストされていません。 (私は答えを更新した)。 – birgire

+0

ありがとうございます。私はこれが意図した通りにうまくいったと言って帰ってきました。 – 58YtQ2H83m17838963l61BU07Y8622

関連する問題