Intereting Posts
Удаление данных из пользовательской таблицы в wordpress Публикация презентаций в WordPress? Добавить новую вкладку в WordPress Plugin install Листинг Должен ли я сохранить этот мулитовый сумасшедший арари как одну мета-запись? Отобразить список пользовательских таксономий из настраиваемого типа сообщений, заказанного их родителями post_type игнорируется WP_Query, когда включен аргумент «tag» wp_nav_menu – горизонтальные, подменю drop downs Автоматическое добавление сообщений и страниц в новые настройки блога При создании сайта WordPress вы можете создавать разные версии сайта с разными темами? Как определить, из сценария плагина, если активная тема имеет <h1> Заголовок сообщения </ h1> stop customize.php перенаправить на страницу входа, если администратор не зашел в систему Изменение URL-адреса пользовательского почтового адреса – (портфель с использованием категорий портфеля) страница не обновляется с помощью базы данных Заказ выработки таксономии в этой функции выпуск перманентных ссылок и архивы

WP_Query orderby не работает с meta_value_num и menu_order

Я создал специальный тип сообщения (sidebar_element), который отображается на боковой панели. На каждом боковом элементе администратор может выбрать, где на боковой панели должен отображаться этот элемент, т.е. 'top', 'middle' или 'bottom' и что значение сохраняется в мета-поле. Значения мета для этих выравниваний составляют 30, 20 и 10.

Теперь, если есть несколько элементов боковой панели с одинаковым выравниванием, они должны быть выровнены по их указанному значению параметра menu_order.

Вот как я пытаюсь добиться всего этого, в моем sidebar.php

$sidebarElems = new WP_Query( array ( 'post_type' => 'sidebar_element', 'posts_per_page' => -1, 'meta_key' => 'sidebar_element_meta_alignment', 'orderby' => 'meta_value_num menu_order', 'order' => 'DESC' ) ); 

Однако это не работает. Элементы сортируются сначала по meta_value_num возрастанию, а затем, правильно, с помощью menu_order . Если я удалю menu_order из meta_values , meta_values будет правильно упорядочен.

Эта вещь сводит меня с ума!

Пожалуйста помоги. Благодарю.

РЕДАКТИРОВАТЬ
Вот SQL-запрос, сгенерированный, когда var_dump($sidebarElems)

 SELECT XXX_posts.* FROM XXX_posts INNER JOIN XXX_postmeta ON (XXX_posts.ID = XXX_postmeta.post_id) WHERE 1=1 AND XXX_posts.post_type = 'sidebar_element' AND (XXX_posts.post_status = 'publish') AND (XXX_postmeta.meta_key = 'sidebar_element_meta_alignment' ) GROUP BY XXX_posts.ID ORDER BY XXX_postmeta.meta_value+0,XXX_posts.menu_order DESC 

ОТВЕТ
Найден ответ, проверьте ниже

Solutions Collecting From Web of "WP_Query orderby не работает с meta_value_num и menu_order"

Нашел ответ на этот вопрос.

Каким-то образом собственный порядок заказа WordPress не является полностью функциональным при попытке упорядочить несколько значений.

Я решил это, изменив WP_Query на SQL Query и включив второй DESC после _postmeta.meta_value+0

 SELECT XXX_posts.* FROM XXX_posts INNER JOIN XXX_postmeta ON (XXX_posts.ID = XXX_postmeta.post_id) WHERE 1=1 AND XXX_posts.post_type = 'sidebar_element' AND (XXX_posts.post_status = 'publish') AND (XXX_postmeta.meta_key = 'sidebar_element_meta_alignment' ) GROUP BY XXX_posts.ID ORDER BY XXX_postmeta.meta_value+0 DESC,XXX_posts.menu_order DESC