it-swarm-ko.tech

사용자 정의 필드의 orderby meta_value를 사용하는 사용자 정의 쿼리

WP3.0부터 커스텀 고급 질의를위한 옵션이 있습니다. 이 시점에서 meta_key, meta_value와 같은 사용자 정의 필드의 일부 쿼리 매개 변수는 새로운 meta_query 매개 변수 대신 사용되지 않습니다 ( 여기 여기 참조).

필자는 새로운 구문을 사용하여 매우 간단한 쿼리를 작성하려고 시도하는데, 지정된 meta_key (order_in_archive)가 포함 된 특정 post_type (서비스)에 의한 쿼리 쿼리 - 예상대로 잘 수행됩니다. 그러나 - 나는 meta_value에 의해 쿼리를 정렬하고 성공하지 못하고 싶습니다.

이것은 내 쿼리입니다.

   query_posts(
    array(  'post_type' => 'services',
        'order' => 'ASC',
        'orderby' => 'meta_value',
        'meta_query' => array(
            array('key' => 'order_in_archive'))
    )
);

나는 또한 meta_value_numeric과 meta_value에 의해 orderby를 시도했지만, 어떤 경우에도 결과는 (정규 게시물처럼) 발행일에 의해 정렬됩니다. 누구나 어떻게 할 수 있는지 알고 있습니까?

감사

34
Maor Barazany

이전 메서드 (WP 3.1.1에서 테스트 됨)를 사용하여 orderby 매개 변수에 대한 메타 키를 정의 할 수 있습니다.

query_posts(
    array(  'post_type' => 'services',
            'order'     => 'ASC',
            'meta_key' => 'some_key',
            'orderby'   => 'meta_value', //or 'meta_value_num'
            'meta_query' => array(
                                array('key' => 'order_in_archive',
                                      'value' => 'some_value'
                                )
                            )
    )
);
34
Ján Bočínec

이 문제는 일반적으로 WordPress 4.2 에서 명명 된 쿼리를 사용하여 지워집니다. 예 :.

$args = array(
  'post_type' => 'services',
  'orderby'   => 'order_clause',
  'meta_query' => array(
       'order_clause' => array(
            'key' => 'order_in_archive',
            'value' => 'some_value',
            'type' => 'NUMERIC' // unless the field is not a number
)));

나에게 숫자 필드로 주문하고 메타 쿼리에서 'type' => 'NUMERIC'를 사용해야했다.

12
Ryan Taylor

WP Codex는이 문제를 해결할 때 실제로 혼란 스럽습니다.

Orderby를 사용하기 위해서는 실제로 meta_query 매개 변수가 필요하지 않습니다. 대신 WP Codex에 의해 사용되지 않는 meta_key 매개 변수가 사용됩니다 : WordPress에서 meta_query와 함께 orderby를 어떻게 사용합니까? 3.1? 그 orderyby 여전히 meta_key가 필요합니다.

그래서 그것이되어야한다.

query_posts( array(
  'post_type' => 'services',
  'order' => 'ASC',
  'orderby' => 'meta_value',
  'meta_key' => 'order_in_archive'
) )
9
Evan Yeung

그것은 간단합니다:

여기 내 코드가 있습니다 :

query_posts(array( 
        'post_type' => 'directors',
        'posts_per_page' => -1,
        'order'    => 'ASC',
        'orderby'  => 'director_weight',
        'meta_key' => 'director_weight'
) );

주요 세부 정보는 다음과 같습니다. include meta_key, meta_key가 포함되어 있지 않으면 내 코드가 순서를 지정하지 않았습니다. 그게 전부입니다.

다음은 director_weight로 주문한 directors 사진 목록의 전체 코드입니다.

<?php 
    query_posts(array( 
        'post_type' => 'directors',
        'posts_per_page' => -1,
        'order'    => 'ASC',
        'orderby'  => 'director_weight',
        'meta_key' => 'director_weight'
    ) );
    while (have_posts()) : the_post();
?>  
    <li <?php echo get_field('director_weight') ?>>
        <img src="<?php echo get_field('director_imagen') ?>">
    </li>
<?php
    endwhile;
    wp_reset_query();
?>

 order_by custom fiel wordpress 

2
Jesus CMD

query_posts를 사용하지 마십시오.

$meta_query = new WP_Meta_Query( $meta_query_args );

$meta_query_args = array(
   'post_type' => 'services',
    'order'     => 'ASC',
    'meta_key' => 'your_key',
    'orderby'   => 'meta_value', //or 'meta_value_num'
    'meta_query' => array(
                    array('key' => 'order_in_archive',
                        'value' => 'some_value'
)));

WP_Meta_Query 매개 변수 사용

1
Brad Dalton

날짜를 내림차순으로 정렬해야하는 맞춤 이벤트 날짜가있었습니다. 내 맞춤 이벤트 날짜가 내 wp_postmeta 테이블에 저장되어 있었고 일반적으로 post_date 또는 수정 된 날짜와 다르므로이 작업이 저에게 효과적이었습니다.

  $args = array(
    'post_type' => 'events', // my post type - yours can be 'posts'
    'post_status' => 'publish', // only get posts with this status
    'orderby' => 'meta_value', // orderby the meta_value of the following meta_key
    'meta_key' => 'my_custom_eventdate', // the custom meta_key name
    'order'=> 'DESC' // sort descending
  );

  $posts = new WP_Query($args);

다음과 같이 $ posts를 반복 할 수 있습니다.

foreach($posts->posts as $p){

    $post_id = $p->ID;
    // and so on ...

    // # example of how I retrieve my event date
    $event = get_post_meta($post_id, 'my_custom_eventdate', true);
}
0
recurse

이 일은 나를 위해,

    $args = array(
        'post_type' => 'services',
        'order' => 'ASC',
        'orderby'   => 'order_clause',   
        'meta_query' => array(
        'order_clause' => array(
        'key' => 'order_in_archive'
    )));

Order_clause에 대한 키를 제공하기 만하면됩니다.

0
pingle60

나는 이것이 꽤 잘 작동하는 것을 발견했다.

<?php 
query_posts(
array(  'posts_per_page' => '-1',
        'post_type' => 'services',
        'order'     => 'DESC',
        'meta_key' => '_order',
        'orderby'   => 'meta_value_num', //or 'meta_value_num'
      )
);
0
gegere