"Categories" for comments?

时间:2016-02-25 作者:N00b

例如,帖子的评论区有3个不同的标签,例如评论、评论和问题。

我已经调查了一段时间了,知道吗,但我还没有想出一个完美的计划。。我想是时候在这里向WordPress的神致辞了。

概念很简单:

       ------------------------------------------------------------------
          1. category link      2. category link     3. category link
       ------------------------------------------------------------------


                        Current category comments


       ------------------------------------------------------------------
如果单击了其中一个链接,请运行(是否通过ajax,取决于品味)查询X 类别评论。

我已经调查过了WP_Comment_Query() 但我不知道如何处理这件事。。没有类别或类型参数,所以我认为comment meta 可能是最好的方式。。

<小时>

Adding category when commenting:

//To functions.php or create a plugin

add_action( \'comment_post\', \'add_comment_category\' );

function add_comment_category( $comment_id ) {

    add_comment_meta( 

        $comment_id,
        \'my_comment_category\', 
        $_POST[\'hidden-input-category-value\'] 
    );
}
前端几乎被覆盖,但管理区域完全不同,我不确定我是否应该在任何可以评论的地方添加隐藏输入(编辑帖子页面、评论页面等)。有更好的替代方案吗?否则,我如何传递当前类别的值

Admin area output:

我不需要在管理区域按类别对它们进行排序,我只需要在注释列表中添加新列,以输出类别,以防万一,也许有时我需要知道。

<小时>

Front-end output:

//Create new template for this comment system and use get_template_part()

//Or add it straight to post or page template

$args = array(

    \'post_id\'    => $current_post_id,
    \'meta_query\' => array(
        array(
            \'key\'   => \'my_comment_category\',
            \'value\' => \'review\'
        )
     )
 );

$comments = new WP_Comment_Query( $args );

//Output
while( $comments->have_comments() ) { 

    $comments->the_comment();

    //Output
} 
else {

    //No comments output
}
这是我平时的灵感WP_Query() 建筑我认为WordPress中存在一致性,所有不同的查询结果可以以相同的方式循环,并使用非常相似的代码(e.g the_post() == the_comment() or have_posts() == have_comments() ).

我不确定默认情况下回复是否有效,我不确定默认情况下嵌套评论是否有效,我不确定目前是否存在其他问题,我想正确的问题是:Is it worth it? 它的性能会比默认注释差得多吗?Any alternatives?

还有什么问题或想法吗?好的,让我知道,我会更新问题。

1 个回复
最合适的回答,由SO网友:flomei 整理而成

评论在WordPress中有点“有限”。它们有三种不同的类型get_comment_type() 显示得很好,您无法扩展该列表。

因此,将元值添加到您的注释中是能够区分不同“类型”注释的最简单、可能也是“最标准”的方法。

在和输出中处理注释基本上保持不变,只是您必须为其中一些注释添加元值。正如您已经展示的,这很容易做到。

关于您的问题:

Is it worth it?

我认为您的解决方案是最好的方法,不需要对数据库进行太多的修补,创建新的结构和类似的东西。你的解决方案根本不需要这些。我喜欢它,因为它提高了兼容性。

Would it perform much worse than default comments?

我认为它的表现不会更糟。基本上,您只需向数据库查询添加另一个参数/进行另一个连接,这样的数据库运行速度非常快。当您的站点负载增加时,尝试实现缓存,它应该可以正常工作。