2016-06-13 6 views
1

私はタグを持ってタグで検索できるコメントが必要なプロジェクトに取り組んでいます。 WPでそれを実装する方法はありますか?あるいは、コメントの代わりに子投稿タイプを作成してタグを適用するなど、いくつかの回避策を探す必要がありますか?ワードプレス - コメントにタグタクソノミーを追加

もしあれば、どうすればいいですか?

ありがとうございます。

答えて

0

コメントメタを使用して、特定のコメントのタグを保存および取得できます。

まず、コメント欄にタグフィールドを追加し、タグを設定します。次のコードは、コメントテキストエリアの直後に「選択」フィールドを追加し、タグを設定します。

add_filter('comment_form_defaults', 'change_comment_form_defaults'); 
function change_comment_form_defaults($default) { 
    $commenter = wp_get_current_commenter(); 
    $out = '<label for="comment_tags">Tags:</label><select name="comment_tags" multiple>'; 
    foreach (get_tags() as $tag) { 
     $out .= '<option value="<?php echo $tag->term_id; ?>"><?php echo $tag->name; ?></option>'; 
    } 
    $out .= '</select>'; 
    $default[ 'comment_field' ] .= $out; 
    return $default; 
} 

comment_postアクションは、コメントがデータベースに格納された直後にトリガされます。ポストメタを格納するために使用することができます。

add_action('comment_post', 'add_tags_to_comment', 10, 2); 
function add_tags_to_comment($comment_ID, $comment_approved) { 
    foreach($_POST["comment_tags"] as $comment_tag) { 
     add_comment_meta($comment_ID, "comment_tag", $comment_tag); 
    } 
} 

選択したタグを1つのレコードに配列として格納するのではなく、各タグを別々のレコードとして保存することをお勧めします。これにより、タグに基づいてコメントを検索しやすくなります。タグに基づいて、コメントを検索する

あなたはコメントのタグを取得する場合は、あなたがget_comment_meta

$tags = get_comment_meta($comment_ID, "comment_tag"); 
foreach($tags as $tag_id) { 
    $tag_term = get_term($tag_id, 'post_tag'); 
    echo $tag_term->name; 
} 

使用WP_Comment_Queryすることができます。

$tags = array(1,32,5,4); /* Replace it with tags you want to search */ 
$args = array(
    'meta_query' => array(
     array(
      'key' => 'comment_tag', 
      'value' => $tags, 
      'compare' => 'IN' 
     ) 
    ) 
); 
$comment_query = new WP_Comment_Query($args); 

これはあなたを助けました。

関連する問題