更新每条新评论的发帖日期?

时间:2017-06-09 作者:Burak Birer

我想更新每一条新评论的帖子,以便Last Modified Date 在网站地图上始终是最新的。

我该怎么做?

谢谢

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

据我所知,每当你的帖子上留下评论时,你都想更改帖子的修改时间。为此,您需要连接到wp_insert_comment 手动挂接并更新帖子日期:

add_action(\'wp_insert_comment\',\'update_post_time\',99,2);
function update_post_time($comment_id, $comment_object) {
    // Get the post\'s ID
    $post_id = $comment_object->comment_post_ID;
    // Double check for post\'s ID, since this value is mandatory in wp_update_post()
    if ($post_id) {
        // Get the current time
        $time = current_time(\'mysql\');
        // Form an array of data to be updated
        $post_data = array(
            \'ID\'           => $post_id, 
            \'post_modified\'   => $time, 
            \'post_modified_gmt\' =>  get_gmt_from_date( $time )
        );
        // Update the post
        wp_update_post( $post_data );
    }
}
请注意,这将在每次创建评论时为帖子创建修订。

如果您的站点地图插件使用post_date 而不是post_modified, 您可以使用此选项:

$post_data = array(
    \'ID\'           => $post_id, 
    \'post_date\'   => $time, 
    \'post_date_gmt\' =>  get_gmt_from_date( $time )
);
然而,这可能会导致问题,并扰乱帖子在档案和主页中的顺序,因为它会更改帖子的creation 日期,而不是修改日期。

SO网友:Rick Hellewell

这可能会改变主页上帖子的顺序,具体取决于主题。

有多种方法可以显示指向最近有评论的页面的链接。

但是,您需要让您的主题(希望是子主题,因为您不想更改主题代码)添加使用注释保存挂钩的代码。例如,您可以使用wp_insert_comment() 钩子,如本链接所述:https://codex.wordpress.org/Plugin_API/Action_Reference/wp_insert_comment

在注释保存期间,还可以使用其他挂钩,具体取决于您希望事情发生的时间。

结束

相关推荐

Query total number of posts

使用搜索过滤器插件。我使用获取数据库中存在的帖子总数 $wp_query->found_posts 但是,当用户过滤页面上的结果时,该数字会根据过滤器上显示的帖子数量而变化。我怎样才能得到不管用户过滤什么都不会改变的静态帖子总数?更新:这是我的完整模板代码。我尝试了下面的答案,但无法使用我的模板。有什么想法吗?if ( $query->have_posts() ) { ?> <ul id=\"florefs\"> &l