在wordpress中获取特定日期之间发布的帖子


Get posts published between specific dates in wordpress

我正在开发一个小部件,它将显示在两个日期之间发布的帖子,例如1月15日和3月15日,但我不知道如何做到。

我看到了一些提到query_posts()的解决方案,但我认为这不是一个好的解决方案。所以我愿意接受任何关于如何做到这一点的建议。

目前,我正在考虑使用pre_get_posts、WP_Query或get_posts,并尝试使用以下代码行:

function my_home_category( $query ) 
{
    if ( $query->is_home() && $query->is_main_query() )
    {
        $query->set( 'day', '15');
    }
}
add_action( 'pre_get_posts', 'my_home_category' );

但这会返回任何一个月15日发布的所有帖子。我知道我可以设置如下内容:

 $query->set( 'monthnum', '1');

并在1月15日发布帖子,但我想在1月十五日至3月15日之间发布所有帖子,我不知道如何实现这一点。

它不必使用pre_get_posts,它可以是get_posts或WP_Query,我只是在寻找一种简单的方法

WP_Query提供了一个date_Query参数,允许您设置before和after的范围。

https://developer.wordpress.org/reference/classes/wp_query/#date-参数

$args = array(
    'date_query' => array(
        array(
            'after'     => 'January 1st, 2015',
            'before'    => 'December 31st, 2015',
            'inclusive' => true,
        ),
    ),
);
$query = new WP_Query( $args );

我刚刚在这里用两种方法的组合回答了一个答案,来自原始问题和@johnnyd23:的答案

function my_home_by_period($query) {
    $query->set('date_query', array(
        array(
            'after'  => array(
                'year'   => 2021,
                'month'  => 10,
                'day'    => 1,
            ),
            'before'     => array(
                'year'   => 2021,
                'month'  => 10,
                'day'    => 31,
            ),
            'inclusive'  => true,
        )
    ));
}
add_action('parse_query', 'my_home_by_period');

您可以将"parse_query"替换为"pre_get_posts",我认为您会得到相同的结果。