11

在我的 Wordpress 网站中,我使用了这个get_posts代码:

get_posts(
        array (
            'numberposts' => 5,
            'orderby'=>'comment_count',
            'order'=>'DESC',
            'post_type'   => array ( 'post' )
        )

如何过滤它以使帖子不超过 10 天?所以它应该只列出过去 10 天的帖子。

4

2 回答 2

39

从 3.7 开始,您可以使用 date_query https://developer.wordpress.org/reference/classes/wp_query/#date-parameters

所以它看起来像:

$args = array(
    'posts_per_page' => 5,
    'post_type' => 'post',
    'orderby' => 'comment_count',
    'order' => 'DESC',
    'date_query' => array(
        'after' => date('Y-m-d', strtotime('-10 days')) 
    )
); 
$posts = get_posts($args);
于 2014-07-31T21:50:28.593 回答
2

文档中的示例应该可以正常工作。get_posts( )在幕后使用WP_Query()来发出实际请求。对于您的情况,修改后的示例应如下所示:

// Create a new filtering function that will add our where clause to the query
function filter_where( $where = '' ) {
    // posts in the last 30 days
    $where .= " AND post_date > '" . date('Y-m-d', strtotime('-10 days')) . "'";
    return $where;
}

add_filter( 'posts_where', 'filter_where' );
$query = get_posts(array (
            'numberposts' => 5,
            'orderby'=>'comment_count',
            'order'=>'DESC',
            'post_type'   => array ( 'post' )
         ));
remove_filter( 'posts_where', 'filter_where' );
于 2013-06-07T23:35:51.127 回答