2016-06-13 36 views
1

我正在研究一個項目,需要評論纔能有標籤並且可以通過標籤進行搜索。有沒有辦法在WP中實現它,或者我應該尋找一些解決方法(比如創建子帖子類型而不是註釋並將標籤應用到它)?WordPress - 將標籤分類添加到評論

如果有,我該怎麼辦?

謝謝。

回答

0

您可以使用評論元來存儲和檢索特定評論的標籤。

首先,將標記字段添加到評論表單並填充標記。以下代碼將在註釋textarea後立即添加一個「select」字段,並使用標籤填充它。

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); 
    } 
} 

相反存儲所選擇的標籤作爲一個單一的記錄陣列的,我寧願每個標籤存儲爲一個單獨的記錄。這將使基於標籤的評論更容易搜索。

當你想要檢索註釋的標籤,你可以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); 

希望這對你有所幫助。