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

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

Я пытаюсь иметь довольно простой запрос с новым синтаксисом, сообщения запроса определенным post_type (сервисы), который содержит указанный meta_key (order_in_archive) - это подходит как ожидалось. Но - я хочу к orderby запрос 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, но в любом случае результаты заказываются годом издания (как обычные сообщения делают). Кто-либо знает, как это может быть сделано?

Спасибо

37
24.04.2011, 06:30
3 ответа

Можно определить метаклавишу для orderby параметра с помощью старого метода (я протестировал на WP 3.1.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'
                                )
                            )
    )
);
36
19.02.2020, 21:54

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

Вам на самом деле не нужен meta_query параметрический усилитель для использования orderby, вместо этого он использует meta_key параметрический усилитель, который, хотя Кодексом WP удерживается от использования, является, был установлен здесь: Как Вы используете 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'
) )
10
19.02.2020, 21:54
  • 1
    Ну, да, это - старый метод для того, чтобы сделать этот запрос, и это, кажется, работает на это указанное. Так или иначе, для более сложных запросов, это не будет работать. Я нашел, что это - известная проблема, которая заботится о, детали могут быть найдены в trac билетах № 15031 и № 17065 –  Maor Barazany 24.04.2011, 03:14

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

<?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
19.02.2020, 21:54
  • 1
    Вопрос о довольно новом meta_query параметр и получение orderby работать с ним, а не о более старом, но все еще функциональный meta_key/meta_value параметры. Кроме того, давайте не поощрять использование query_posts. микросхема –  s_ha_dum 28.12.2012, 21:55
  • 2
    Этот ответ содержит несколько плохих методов: использование-1, передавая его как строку, с помощью query_posts. Это должно быть удалено. –  Ihor Vorotnov 01.03.2019, 11:18

Теги

Похожие вопросы