programing

Wordpress에서 특정 날짜 사이에 게시물을 가져옵니다.

newnotes 2023. 3. 16. 21:48
반응형

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-파라미터

$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'로 치환하면 같은 결과가 나올 것입니다.

언급URL : https://stackoverflow.com/questions/29275403/get-posts-published-between-specific-dates-in-wordpress

반응형