比较用户上次发帖的日期

时间:2016-10-05 作者:Vahid

我想比较用户最近两篇帖子的日期。我是WordPress开发的新手。我已经写了这段代码,但我不确定它是否正确。请帮助我更正它:

$ID                  = $post->ID;
$user_id             = $post->post_author;
$author_recent_posts = get_most_recent_post_of_user( $user_id );
$last_post_id        = $author_recent_posts[1]->post_id;
$last_post           = get_post($last_post_id);
$last_post_date      = $last_post->post_date;
$post_date           = $post->post_date;

if ( $post_date - $last_post_date > 24*60*60 )
    return;

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

根据codex, 你在操纵get_most_recent_post_of_user()\'s返回值的方式错误。get_most_recent_post_of_user() 直接返回post_date_gmt 在…之间blog_id, post_id, 和post_gmt_ts.

无论如何,如果你想得到2 特定的最后帖子author, 使用WP_Query 相反,默认情况下,它应该按照您需要的顺序获取最后的帖子。

$author_id = $author_id;

$args = array(
    \'post_type\'      => \'post\',
    \'author\'         => $author_id,
    \'posts_per_page\' => 2,
);

$query      = new WP_Query( $args );
$last_posts = $query->get_posts(); /*Array of post objects*/
现在,你只有最后两个WP_Post 可通过以下方式访问的对象:

$last_post        = $last_posts[0]; /*The most recent post object*/
$second_last_post = $last_posts[1]; /*The second most recent post object*/
如果您仍然需要比较上一篇文章的两个日期:

$last_post_date        = $last_post->post_date_gmt;
$second_last_post_date = $second_last_post->post_date_gmt;
请注意,我们现在有2个GMT 要处理的字符串日期。为了便于比较,我们将它们转换为timestamp:

$last_post_date        = strtotime( $last_post_date );
$second_last_post_date = strtotime( $second_last_post_date );

if ( ( $last_post_date - $post_date ) > 86400 )
    return;

相关推荐

如何使用GET_POSTS根据单个帖子ID进行过滤?

如何使用get\\u posts根据单个post id进行筛选?(我不想使用get\\u post,因为我在另一个函数中使用它,该函数可能会使用其他参数,并且应该返回一个数组)。以下方法不起作用:get_posts(array( \'ID\' => 12345, )); get_posts(array( \'p\' => 12345, )); get_posts(array( \'post\'