如何参考WordPress中的下一个评论

时间:2016-10-02 19:05:02

标签: wordpress timestamp comments

通过" Wordpress"中的下一个评论我不是指分页按钮转到下一页。而且我并不是要求读者订阅后续评论。我要问的是:

在定义注释N的显示内容时,如何引用注释N + 1?具体来说,我希望在有关评论之后立即获得批准的评论的时间戳。

我一直在网上寻找答案,但是如果有任何答案,他们会被隐藏在" Next"分页按钮或怀疑以后的评论。

也许这可以通过wp_comment_query()以某种方式完成:

https://codex.wordpress.org/Class_Reference/WP_Comment_Query

但我以前从未使用过它。事实上,我的PHP和WordPress体验几乎始于我正在进行自定义的网站,这是我的第一个网页设计项目。

解决这个问题最简单的方法是什么?顺便说一句,这就是我想知道的原因:

在我的网站上,我在审核队列中延迟评论时显示2个时间戳 - 提交评论时的1个时间戳以及批准和发布评论时的后续时间戳。但是我试图控制显示第二个时间戳的情况。我已经实施的1个标准基于阈值时间延迟。但是,如果NEXT评论在上述评论获得批准之前发布,那也很重要。在这种情况下,我想展示第二个时间戳,以澄清下面的评论是在没有看到相关评论的情况下编写的。

1 个答案:

答案 0 :(得分:0)

我解决了自己的问题,但我花了一段时间。由于某种原因,必须丢弃各种简单的方法。最终我不得不使用wp_comment_query。

这种事情作为MySQL查询非常直观(这是我最熟悉的语言):

timestamp中选择some table 其中timestamp>     (     从timestamp中选择some table     其中comment id = This_Comment_ID     )     作为some aliascomment id> This_Comment_ID 按time stamp asc排序 限制1;

但是WordPress会引发各种各样的障碍。首先,WordPress date_query允许关于日期的“后”定义,但不允许时间。所以我们不能用它。相反,“timestamp>”部分必须以这种方式编写:

'date_query' => array(
        'year'  => date( 'Y' , strtotime( $written_stamp ) ) ,
        'month' => date( 'F' , strtotime( $written_stamp ) ) ,
        'day'   => date( 'j' , strtotime( $written_stamp ) ) ,
        'hour' => date( 'H' , strtotime( $written_stamp ) ) ,
        'minute'=> date( 'i' , strtotime( $written_stamp ) ) ,
        'compare' => '>='
    ),

其中$ written_stamp是提交评论的时刻。即使该时间戳必须从get_comment_date()加上get_comment_time()连接。

更糟糕的是,Wordpress的查询不允许与评论ID进行比较。我不能简单地写“comment id> This_Comment_ID”。仅使用时间戳> =当前评论的时间戳来查找评论是不够的。因为那将包括当前评论 - 可能还有其他评论,如果在同一分钟内提交的评论超过1条。因此,为了打破关系并排除事实上更早的评论,我不得不在wordpress查询中添加一些非常不优雅的行,特别是排除了最近的六个评论,包括有问题的评论:

    'comment__not_in' => array(
            $this_comment ,
            $this_comment - 1 ,
            $this_comment - 2 ,
            $this_comment - 3 ,
            $this_comment - 4 ,
            $this_comment - 5
            ) 

其中$ this_comment = get_comment_id()。

然后,似乎WordPress查询被设计为在数组中返回一大堆注释 - 而不仅仅是1条评论的1条信息,这就是我需要的。所以我无论如何都经历了一个foreach,因为那是显而易见的。

简单的代码。但是不必要地想出来。