簡體   English   中英

獲取在 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 月 15 日至 3 月 15 日之間發布所有帖子,但我不知道如何實現。

它不必使用 pre_get_posts,它可以是 get_posts 或 WP_Query,我只是在尋找一種簡單的方法來做到這一點。

WP_Query 提供了一個 date_query 參數,允許您設置前后的范圍。

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

$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');

你可以用'pre_get_posts'替換'parse_query',我想你會得到相同的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM