条件:当前用户在最近X天内更新的帖子

时间:2016-09-16 作者:Pete

我想找一个native WP function solution 到另一个解决方案。。。

我正在寻找一个条件,它可以检查当前用户是否在过去的X天(或小时)内更新了他们的自定义帖子(CUSTOMPOST)。如果他们更新了,就这样做,如果他们没有更新,就那样做,否则就做任何事情。

SQL解决方案

global $wpdb;
$pre=$wpdb->prefix;
$date=date("Y-m-d H:i:s",strtotime("-1 days"));
$userid=get_current_user_id();
$sql="SELECT p.ID FROM ".$pre."posts as p WHERE p.post_modified >= \'".$date."\' AND  p.post_author=\'".$userid."\' AND p.post_type=\'CUSTOMPOST\'";
$modpost=$wpdb->query($sql);
if($modpost){ 

    //Do what you need to do

}

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

我刚刚意识到,在我之前的回答中,我重点复制了您当前的SQL查询,但您的查询并不是问题文本所说的内容。

一个条件似乎是当前用户必须是原始作者。

如果版本历史记录存在,那么我们需要找出每个版本的父帖子作者。

我认为您应该考虑将这些信息存储在用户元表中,而不是走这条路。

存在_last_edit post meta键确定最后修改每个帖子的人。例如,用于get_the_modified_author() 作用

因此,我的建议是储存类似的_wpse_last_modified_cpt 每次更新cpt时,以unix修改时间为值的用户元键。

然后,您可以为当前用户获取它,并检查存储的日期时间是否在所需的限制内。

我希望我正确理解了这个问题;-)

Previous Answer:

听起来您正在寻找此类查询:

$query = new WP_Query( 
    [
        \'post_type\'     => \'cpt\',                       // Adjust to your needs!
        \'fields\'        => \'ids\',
        \'author\'        => get_current_user_id(),
        \'post_status\'   => \'publish\',
        \'date_query\'    => [
            [
                \'after\'     => \'7 days ago midnight\',  // Adjust to your needs!
                \'inclusive\' => true,
                \'column\'    => \'post_modified\'         
            ]
        ]
    ]
);
这就产生了WHERE SQL的一部分:

WHERE 1=1 
    AND ( wp_posts.post_modified >= \'2016-09-09 00:00:00\' ) 
    AND wp_posts.post_author IN (123) 
    AND wp_posts.post_type = \'cpt\' 
    AND wp_posts.post_status = \'publish\' 
然后应添加is_user_logged_in() 运行查询前进行检查。

然后,您可以使用这种支票:

if( $query->have_posts() )
{
      // Do what you need to do!
}
查看当前用户编写的自定义帖子是否在上一个n 天。

相关推荐