WordPress - 为评论添加标签分类

时间:2016-06-13 03:19:41

标签: wordpress tags comments

我正在开展一个项目,该项目要求评论标记并可通过标记进行搜索。有没有办法在WP中实现它,或者我应该寻找一些解决方法(比如创建子帖子类型而不是注释并为其应用标签)?

如果有,我该怎么办?

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用comment meta来存储和检索特定评论的标签。

首先,将标记字段添加到注释表单并填充标记。以下代码将在注释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 操作。您可以使用它来存储post meta。

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

希望这对你有所帮助。