通过" Wordpress"中的下一个评论我不是指分页按钮转到下一页。而且我并不是要求读者订阅后续评论。我要问的是:
在定义注释N的显示内容时,如何引用注释N + 1?具体来说,我希望在有关评论之后立即获得批准的评论的时间戳。
我一直在网上寻找答案,但是如果有任何答案,他们会被隐藏在" Next"分页按钮或怀疑以后的评论。
也许这可以通过wp_comment_query()以某种方式完成:
https://codex.wordpress.org/Class_Reference/WP_Comment_Query
但我以前从未使用过它。事实上,我的PHP和WordPress体验几乎始于我正在进行自定义的网站,这是我的第一个网页设计项目。
解决这个问题最简单的方法是什么?顺便说一句,这就是我想知道的原因:
在我的网站上,我在审核队列中延迟评论时显示2个时间戳 - 提交评论时的1个时间戳以及批准和发布评论时的后续时间戳。但是我试图控制显示第二个时间戳的情况。我已经实施的1个标准基于阈值时间延迟。但是,如果NEXT评论在上述评论获得批准之前发布,那也很重要。在这种情况下,我想展示第二个时间戳,以澄清下面的评论是在没有看到相关评论的情况下编写的。
答案 0 :(得分:0)
我解决了自己的问题,但我花了一段时间。由于某种原因,必须丢弃各种简单的方法。最终我不得不使用wp_comment_query。
这种事情作为MySQL查询非常直观(这是我最熟悉的语言):
从timestamp
中选择some table
其中timestamp
>
(
从timestamp
中选择some table
其中comment id
= This_Comment_ID
)
作为some alias
和comment 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,因为那是显而易见的。
简单的代码。但是不必要地想出来。