Intereting Posts
Список пользовательских сообщений по пользовательской таксономии Попытка найти способ запроса, как обычный поиск, будет делать. в пределах страницы search.php как определить, что мы добавляем новый пользовательский тип сообщения или редактируем пользовательский тип сообщения Удалите определенные кнопки из wp_editor () API переходных процессов и мультисайты Особый порядок Тема window.open вызывает «Страница не найдена» Как ограничить количество вложений Как я могу получить slug страницы URL-адрес перенаправления приложения Facebook не работает Как получить заголовок категории в пользовательском цикле? Получите общее количество всех комментариев и результат отображения Добавить текст в wordpress admin 'Добавить сообщение' edit Как добавить диапазон дат в woocommerce с кодом Добавить переменные строки запроса ко всем гиперссылкам URL на моем сайте

Пользовательский запрос с orderby meta_value настраиваемого поля

Aa, вы знаете, с WP3.0 есть варианты для пользовательских расширенных запросов, что отлично. В связи с этим некоторые параметры запроса настраиваемых полей, таких как meta_key, meta_value, устарели для нового параметра meta_query ( см. Здесь )

Я пытаюсь получить довольно простой запрос с новым синтаксисом, сообщениями сообщений с определенным post_type (services), который содержит указанную meta_key (order_in_archive) – это происходит хорошо, как ожидалось. Но – я хочу заказать запрос по meta_value и без успеха.

Это мой запрос –

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

Я попробовал orderby также meta_value_numeric и meta_value, но в любом случае результаты заказываются по дате публикации (как это делают обычные сообщения). Кто-нибудь знает, как это можно сделать?

благодаря

Solutions Collecting From Web of "Пользовательский запрос с orderby meta_value настраиваемого поля"

Вы можете определить мета-ключ для параметра orderby, используя старый метод (я тестировал WP.10.1) …

 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' ) ) ) ); 

WP Codex на самом деле запутывает при решении этой проблемы.

Вам действительно не нужен параметр meta_query для использования orderby, вместо этого он использует параметр meta_key, который, хотя WP Codex устарел, был установлен здесь: как вы используете orderby с meta_query в WordPress 3.1? что orderyby все еще нуждается в meta_key.

так что это должно быть

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

Для меня я хотел заказать по числовому полю, и мне пришлось использовать 'type' => 'NUMERIC' внутри мета-запроса.

Эта проблема в общем случае устранена в 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 ))); 

Это просто:

Вот мой код:

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

Основная деталь: include meta_key , мой код meta_key порядок, если meta_key включен, и это все:

Вот полный код списка заказов director_weight :

 <?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

Не используйте 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

Я нашел, что это работает очень хорошо.

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

У меня был набор настраиваемых дат событий, которые мне нужно было сортировать по дате по убыванию. Поскольку моя пользовательская дата события хранилась в моей таблице 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); }