날짜와 오늘 사이에 게시물을 게시하는 방법은 무엇입니까?


10

날짜와 오늘 사이에 게시물을 게시하는 방법 query_posts()입니까?

예 : 2012-04-01 이후 게시 된 모든 게시물

감사

편집하다 :

이 검색어 게시물에 필터 날짜를 추가하는 방법은 무엇입니까?

query_posts( array(  
    array('post'),
    'tax_query' => array(
        array(
            'taxonomy' => 'post_format',
            'field' => 'slug',
            'terms' => array('post-format-image')
        )
    ),
    'cat' => '-173',
    'post_status' => 'publish'
) );


query_posts ()를 사용하지 마십시오. 이것을 확인하십시오-> wordpress.stackexchange.com/a/1755/7890
moraleida

답변:


23

2014 년 12 월 23 일 업데이트

클래스의 date_query속성을 사용하는 더 좋은 방법이 있습니다 WP_Query.

$args = array(
    'post_type' => 'post', 
    'tax_query' => array(
        array( 
            'taxonomy'  => 'post_format',
            'field'     => 'slug',
            'terms'     => array( 'post-format-image' )
        )
    ),
    'cat'           => '-173',
    'post_status'   => 'publish',
    'date_query'    => array(
        'column'  => 'post_date',
        'after'   => '- 30 days'
    )
);
$query = new WP_Query( $args );

오래된 답변

WP_Query ()에서 시간 매개 변수 사용

코덱스에서 인용하는 예 :

지난 30 일 동안의 게시물 반환 :

// This takes your current query, that will have the filtering part added to.
$query_string = array(
    'post_type' => 'post', 
    'tax_query' => array(
        array(
            'taxonomy'  => 'post_format',
            'field'     => 'slug',
            'terms'     => array( 'post-format-image' )
        )
    ),
    'cat'           => '-173',
    'post_status'   => 'publish'
);

// 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( '-30 days' ) ) . "'";
    return $where;
}

add_filter( 'posts_where', 'filter_where' );
$query = new WP_Query( $query_string );
remove_filter( 'posts_where', 'filter_where' );

OP의 업데이트 된 질문에 대한 응답으로 수정 합니다.

query_posts를 사용하지 마십시오 . 위의 기술을 사용하여 기본 쿼리를 변경할 수 있습니다 (일부 추가 조건에 따라 -홈페이지, 'foobar'페이지 등).

function wpse52070_filter_where( $where = '' , $query ) {
   if( $query->is_main_query() && is_page( 'foobar' ) ){
      // posts in the last 30 days
      $where .= " AND post_date > '" . date( 'Y-m-d', strtotime( '-30 days' ) ) . "'";
   }

    return $where;
}
add_filter( 'posts_where', 'wpse52070_filter_where' );

확인 ! 필터는 이제입니다 $query_string. 그러나 Query_Posts에서 내 인수와 어떻게 작동합니까? (내 편집 @Moraleida 확인)
Steffi

1
@Steffi-업데이트 된 답변을 참조하십시오. Moraleida가 더 이상 신경 쓰지 않기를 바랍니다.
Stephen Harris

1
방금 현재 검색어를 추가 했으므로 query_posts를 바로 버릴 수 있습니다. :) 그리고 빠른 업데이트를 위해 @StephenHarris에게 감사드립니다!
moraleida

@moraleida 감사합니다! 대박! 단 하나. "query_posts를 사용하지 마십시오." 그러나 query_posts()템플릿 파일 (예 : home.php ) 에서 사용하는 것이 낫지 new WP_Query()않습니까?
Steffi

실제로는 아닙니다. query_posts메인 루프를 변경하는 데에만 사용해야합니다. 많은 사람들은 그때조차도 그렇지 않다고 주장합니다 ( the pre_get_posts필터도 있습니다). 나는 종종 독립형이며 다른 것을 방해하지 않고 여러 번 사용할 수 있으므로 내 쿼리 만 사용 WP_Query하거나 get_posts모든 쿼리에 사용합니다. 자세한 설명은 의견에 대한 링크 된 답변을 확인하십시오. :)
moraleida

3

3.7부터 date_query http://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters를 사용할 수 있습니다

따라서 전달 된 인수는 다음과 같습니다.

$query_string = array(
      'post_type' => 'post', 
      'date_query' => array(
        'after' => '2012-04-01' 
      ),
      'tax_query' => array(
          array( 
             'taxonomy' => 'post_format',
             'field' => 'slug',
             'terms' => array('post-format-image')
          )
      ),
      'cat' => '-173',
      'post_status' => 'publish'
);

0

두 날짜 사이에 게시물을 가져 오려면 date_query 매개 변수에서 before 및 after 매개 변수를 사용하십시오.

$query_string = array(
  'post_type' => 'post', 
  'date_query' => array(
    'column' => 'post_date',
    'after' => '2012-04-01',
    'before' => '2012-04-30' 
  ),
  'tax_query' => array(
      array( 
         'taxonomy' => 'post_format',
         'field' => 'slug',
         'terms' => array('post-format-image')
      )
  ),
  'cat' => '-173',
  'post_status' => 'publish'
);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.