it-roy-ru.com

Порядок мета-ключом в пользовательском типе записи не влияет на запрос

Я пытаюсь запросить заказ постов с помощью meta_key. Но после запуска WP_Query в запросе sql нет никаких изменений в предложении order.

$args = array(
'post_type'   => 'event',
'post_status' => 'publish',

'meta_key' => '_start_eventtimestamp',
'orderby' => 'meta_value_datetime',
'order' => 'ASC',

'meta_query' => array(
    array(
        'key' => '_start_eventtimestamp',
        'value' => date('Ymd'),
        'compare' => '>='
    )
),

'posts_per_page' => '7',
);

$event_query = new WP_Query( $args );

И когда я получаю сгенерированный запрос, я получил это:

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts
 INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id )
 INNER JOIN wp_postmeta AS mt1 ON ( wp_posts.ID = mt1.post_id )
 WHERE 1=1 AND ( wp_postmeta.meta_key = '_start_eventtimestamp'
 AND ( ( mt1.meta_key = '_start_eventtimestamp' AND mt1.meta_value >= '20160930' ) ) )
 AND wp_posts.post_type = 'event' AND ((wp_posts.post_status = 'publish'))
 GROUP BY wp_posts.ID ORDER BY wp_posts.menu_order ASC LIMIT 0, 7

Порядок заказа не претерпел изменений.
Что-то не так в моем сценарии заказа meta_key?

3
Rafael Soufraz

Пожалуйста, загляните в WP_QUERY Improve и WP_QUERY Order & Orderby Параметры .


$args = array( 
         'post_type'   => 'event',
         'post_status' => 'publish',
         'orderby' => array(
           'meta_key' => 'ASC'
          ), 
         'meta_query' => array(
           array(
             'key' => '_start_eventtimestamp',
             'value' => date('Ymd'),
             'compare' => '>='
          ),
       ),
    );

Надеюсь, это сработает для вас!

2
Syed Fakhar Abbas