2014-09-04 2 views
0

Я пытаюсь заказать WP_query по meta_value, но WordPress, кажется, не хотят, чтобы изменить orderbyWordPress запрос будет только OrderBy menu_order

Запрос выглядит следующим образом

$popular_args = array(
    'post_type' => 'post', 
    'post_status' => 'publish', 
    'posts_per_page' => -1, 
    'meta_key' => 'wpb_post_views_count', 
    'orderby' => 'meta_value_num', 
    'order' => 'ASC', 
); 

$popular_query = new WP_query($popular_args); 

В результате запроса заключается в следующем

WP_Query Object ([query_vars] => Array ( 
    [post_type] => post 
    [post_status] => publish 
    [posts_per_page] => -1 
    [meta_key] => wpb_post_views_count 
    [orderby] => menu_order 
    [order] => ASC 
    [error] => 
    [m] => 
    [p] => 0 
    [post_parent] => 
    [subpost] => 
    .... 

Вы должны заметить, что значение orderby в запросе был установлен на menu_order

Даже если я spesifically установить его meta_value_num

Я сбросу данных запроса и пост повсюду, чтобы попытаться получить запрос играть хорошо на сейчас я из идей.

Любая помощь будет удивительным

Ps: запрос о вызывается в файле, который находится в sidebar, который INTURN называется использованием get_sidebar() WordPress функцию

+0

Вы отсутствующими где-то сбрасывается, потому что параметр 'order_by' по умолчанию -' date'. Вы проверили, есть ли у вас какие-либо фильтры или что-то в этом роде? Кроме того, у вас есть синтаксическая ошибка, она должна быть 'new WP_Query ($ popular_args)' –

+0

Спасибо за ответ, но на сайте нет запросов, которые устанавливают свойство orderby в menu_order. Кроме того, WP_query была опечаткой ... она правильная в фактическом коде. –

+0

можете ли вы разместить больше кода? также, попробуйте 'var_dump ($ wp_query);' перед генерацией нового запроса. –

ответ

0

required Если мета значение является числовым значение, то вы должны использовать meta_value_num. В противном случае используйте meta_value. Например:

$popular_args = array(
    'post_type' => 'post', 
    'post_status' => 'publish', 
    'posts_per_page' => -1, 
    'meta_key' => 'wpb_post_views_count', 
    'orderby' => 'meta_value', 
    'order' => 'ASC', 
); 

$popular_query = new WP_query($popular_args); 
+0

Да, я пробовал это изначально ... не имело значения. Я установил его в «meta_value_num» в моем решении, используя «action» hook –

0

Это немного взломанный, но ситуация очень странная.

Этот запрос является единственным запрос выполняется на странице .... так это странно, что свойства запроса orderby и order не записываются в запросе, когда он отправляется в базу данных в качестве SQL

у меня есть решение, но это немного Hacky = S

add_action('pre_get_posts', 'filter_query'); 
    $popular_query = new WP_Query($popular_args); 
    remove_action('pre_get_posts', 'filter_query'); 

    function filter_query($query) { 
     $query->query_vars['orderby'] = 'meta_value_num'; 
     $query->query_vars['order'] = 'DESC'; 
     return $query; 
    } 

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

ошибки весело ... пауза ... naaaaaaat !!!

Если кто-то хочет, чтобы опубликовать лучший ответ, который был бы супер летать, как я не люблю решение, как это ... но я на плотный график с этим один ....