查询最近更新的帖子(最近24小时内更新的帖子)

时间:2012-05-29 作者:user16562

我很难找到一个例子来说明如何创建一个循环,其中包含过去24小时内更新的帖子。

我的想法是有一页帖子,或者在索引上。php最后一天更新的帖子列表(查询完成后24小时)

这可能吗?有什么方法可以执行该查询吗?

提前感谢

2 个回复
SO网友:krembo99
<?php
$timelimit=1 * 86400; //days * seconds per day
$post_age = date(\'U\') - get_post_time(\'U\');
if ($post_age < $timelimit) {
echo \'this post is within my time limits \'; //DO SOMETHING
}
?>
SO网友:Matthew Boynes

根据您希望帖子显示的位置,解决方案会有所不同。如果要筛选主主页,此解决方案将执行以下操作:

/**
 * Conditionally add a posts_where filter based on the current query
 *
 * @param object $query
 * @return void
 */
function wpse_53599_24h_pre_get_posts( $query ) {
    if ( is_admin() || ! $query->is_main_query() || ! $query->is_home() )
        return;

    add_filter( \'posts_where\', \'wpse_53599_filter_last_24h\' );
}
add_action( \'pre_get_posts\', \'wpse_53599_24h_pre_get_posts\' );

/**
 * Add a clause to posts_where to restrict posts to the last 24h
 *
 * @param string $where
 * @return string
 */
function wpse_53599_filter_last_24h( $where = \'\' ) {
    $where .= " AND post_date >= \'" . date( \'Y-m-d H:i:s\', time() - DAY_IN_SECONDS ) . "\'";
    remove_filter( \'posts_where\', \'wpse_53599_filter_last_24h\' );
    return $where;
}
请注意,我们删除了过滤器,因为我们不想限制站点上运行的每个帖子查询。只有我们的相关人员。

如果要筛选主主主查询以外的查询,只需在pre_get_posts 作用

如果要筛选子查询,则只需添加posts_where 在实例化WP\\U查询之前进行筛选,然后立即将其删除,并跳过pre_get_posts 一点

结束