Orderby menu_order не работает

21 июн. 2012 г., 16:56:00
Просмотры: 24.3K
Голосов: 3

Мой код:

$sliders = new WP_Query(array('post_type' => 'sliders', 'showposts' => '10', 'orderby' => 'menu_order', 'order' => 'ASC', 'countries'=> 'Default', 'supress_filters' => true, 'meta_query' => array(

Но WordPress сортирует по post_date :(

[query] => Array
    (
        [post_type] => sliders
        [showposts] => 10
        [orderby] => menu_order
        [order] => ASC
        [countries] => ES
        [supress_filters] => 1
        [meta_query] => Array
            (
                [0] => Array
                    (
                        [key] => _sectors
                        [value] => 540
                        [compare] => IN
                    )

            )

    )

[request] =>  SELECT SQL_CALC_FOUND_ROWS  wp_posts.* FROM wp_posts  INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)  JOIN wp_icl_translations t ON wp_posts.ID = t.element_id
                    AND t.element_type = 'post_sliders' JOIN wp_icl_languages l ON t.language_code=l.code AND l.active=1 WHERE 1=1  AND ( wp_term_relationships.term_taxonomy_id IN (16) ) AND wp_posts.post_type = 'sliders' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND ( (wp_postmeta.meta_key = '_sectors' AND CAST(wp_postmeta.meta_value AS CHAR) IN ('540')) ) AND t.language_code='es' GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10
1
Комментарии

Сомневаюсь, что это ваша проблема, но и showposts, и {tax} (где вы используете 'countries') являются устаревшими. Вместо них используйте posts_per_page и tax_query.

mrwweb mrwweb
21 июн. 2012 г. 17:28:58
Все ответы на вопрос 3
2

Используйте это вместо. У меня сработало

'sort_column' => 'menu_order'
7 июн. 2017 г. 20:19:08
Комментарии

Этот ответ действительно недооценен. Это сработало идеально

David Kooijman David Kooijman
4 июл. 2019 г. 15:10:03

Рад, что вам помогло. Спасибо, Дэвид

Oluwaseye Oluwaseye
5 июл. 2019 г. 18:25:39
0

Во-первых, это suppress_filters с двумя P.

Во-вторых, 'countries' => 'default' ничего не делает в обычном запросе, поэтому я подозреваю, что у вас есть что-то ещё в коде.

В-третьих, когда я выполняю ваш запрос с этим кодом

$sliders = new WP_Query(array('post_type' => 'sliders', 
'showposts' => '10', 
'orderby' => 'menu_order', 
'order' => 'ASC', 
'countries'=> 'Default', 
'suppress_filters' => true, 
'meta_query' => array( array(
    'key' => '_sectors',
    'value' => 540,
    'compare' => 'IN',
    ) ),
) );

Я получаю такой результат:

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) WHERE 1=1 AND wp_posts.post_type = 'sliders' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'future' OR wp_posts.post_status = 'draft' OR wp_posts.post_status = 'pending' OR wp_posts.post_author = 1 AND wp_posts.post_status = 'private') AND ( (wp_postmeta.meta_key = '_sectors' AND CAST(wp_postmeta.meta_value AS CHAR) IN ('540')) ) GROUP BY wp_posts.ID ORDER BY wp_posts.menu_order ASC LIMIT 0, 10

Обратите внимание, что сортировка по menu_order выполнена правильно.

7 сент. 2012 г. 22:54:51
1

Я думаю (может быть, ошибаюсь), что проблема в том, что только страницы (pages) имеют параметр menu_order. Также, когда вы регистрировали тип записи (post_type), вы установили параметр 'hierarchical' => true, ?

21 июн. 2012 г. 20:45:49
Комментарии

Как это относится к вопросу? Пожалуйста, опубликуйте объяснение

Pieter Goosen Pieter Goosen
22 мая 2014 г. 13:33:56