programing

메타 및 이전 날짜를 포함한 쿼리를 게시합니다.

showcode 2023. 3. 6. 21:41
반응형

메타 및 이전 날짜를 포함한 쿼리를 게시합니다.

나는 이 문제를 해결하기 위해 애쓰고 있다.wp_query현재 투고에 할당되어 있는 커스텀 설정이 몇 가지 있습니다.첫 번째는 투고가 기능하고 있는지 여부입니다.두 번째는 투고가 종료되는 날짜입니다(결과에 표시되지 않습니다).기능에 관한 쿼리를 가지고 있습니다만, 이 종료일을 이 기능에 적용하면 됩니다.다음은 '기능'을 사용한 쿼리 작업 검색입니다.

WP_Query('meta_key=skyali_feature&showposts=4&orderby=post_date');

종료일은 로 설정됩니다.wp_postmeta표가 어디에 있는지meta_key'the_date'와meta_values'05/16/2013 05:24'처럼 보입니다.위의 쿼리를 편집하고 싶습니다만, 「the_date」가 설정되어 있는 경우는, 「the_date」가 오늘 날짜보다 큰 경우에만 투고가 포함되어 있습니다.

실패한 시도는 다음과 같습니다.

WP_Query(
   'meta_key=skyali_feature&meta_key=the_date&meta_compare=>=&meta_value='
   .date('d/m/Y H:i')
   .'&showposts=4&orderby=post_date&orderby=the_date'
);

최근에 아주 비슷한 일을 해야 했고 결국엔 그 일을 해야 했어요.meta_query대신 속성을 지정합니다.다음과 같은 작업을 수행할 수 있습니다.

$today = date('Ymd');
$args = array(
    'post_type' => 'post',
    'posts_per_page' => '4',
    'meta_key' => 'the_date',
    'meta_query' => array(
        array(
            'key' => 'skyali_feature'
        ),
        array(
            'key' => 'the_date',
            'value' => $today,
            'compare' => '>='
        )
    ),
    'orderby' => 'meta_value_num',
    'order' => 'ASC'
);

$your_custom_query = new WP_Query($args);

몇 가지 메모...

  • 이 예에서는 날짜별로 필터링만 하면 되는데, 날짜/시간을 자신의 날짜로 필터링해야 할 것 같습니다. (첫 번째 줄만 조정하면 됩니다.)$today원하는 형식을 사용하여 변수를 지정합니다).

  • 사용하다posts_per_page대신showposts.showposts는 권장되지 않습니다.

  • 다음 명령어가 포함되어 있는 점에 주의해 주세요.meta_key2회(어레이의 최상위 레벨에 1회, 또 1회)의 요소로서meta_query어레이. 이 방법으로 포함하지 않으면 키를 기준으로 결과를 정렬할 수 없는 알려진 버그가 있습니다.나도 한동안 싸웠어!

이게 도움이 됐으면 좋겠는데, 재밌게 놀아요!

[edit] 사용자 이름 추가 안 함skyali_feature키를 어레이에 되돌립니다.

날짜 데이터 유형이 있는 고급 사용자 지정 필드 플러그인을 사용하는 사용자는 오늘보다 크거나 같은 날짜에 대해 다음과 같이 하십시오.

    $today = date('Ymd');
    $args = array(
        'post_type' => 'post',            
        'meta_key' => 'end-date',
        'meta_query' => array(
            array(
                'key' => 'end-date'
            ),
            array(
                'key' => 'end-date',
                'value' => $today,
                'compare' => '>='
            )
        ),
        'orderby' => 'meta_value',
        'order' => 'ASC'
    );
   $your_custom_query = new WP_Query($args);

커스텀 메타데이터 매니저를 사용하고 있는 유저에게는,datepicker필드는 타임스탬프로 저장됩니다.

따라서 유사한 경우 위의 예가 작동하지 않으며 php가 비교해야 할 값을 분류하도록 할 수 있습니다.그리고 하루 전 23시 59분 59초에 타임스탬프가 작동하게 됩니다.

    $yesterday = strtotime('yesterday 23:59:59');
    $args = array(
        'post_type' => 'post',            
        'meta_key' => 'end-date',
        'meta_query' => array(
            array(
                'key' => 'end-date'
            ),
            array(
                'key' => 'end-date',
                'value' => $yesterday,
                'compare' => '>='
           )
        ),
        'orderby' => 'meta_value',
        'order' => 'ASC'
    );
    $your_custom_query = new WP_Query($args);

블로그의 시간대 설정도 고려할 경우 다음 예시와 같이 current_time()사용합니다.

    $now = current_time('timestamp');
    $yesterday = mktime(23, 59, 59, date('n',$now), date('j',$now)-1);

언급URL : https://stackoverflow.com/questions/16596551/posts-query-including-meta-and-greater-than-date

반응형