2016-01-18 4 views
0

У меня есть мета-ключ и значение, которое отслеживает людей, которым нравится сообщение. Однако, если сообщение не имеет симпатий, у него нет мета-ключа или значения. Таким образом, мой запрос WP:Закажите сообщения по meta value - wordpress

$args = array(
    'post_type' => 'post', 
    'meta_key' => '_post_like_count', 
    'orderby' => 'meta_value_num', 
    'order' => 'DESC', 
    'posts_per_page' => 3 
); 
$pop_posts = new WP_Query($args); 

Запрос выше просто не возвращает правильные результаты.

Я попытался перестановки $ арга ниже, но с еще не радостью:

$args = array(
    'post_type' => 'post', 
    'meta_query' => array(
      'relation' => 'OR', 
      array(
        'key' => '_post_like_count', 
        'compare' => 'EXISTS', 
       ), 
      ), 
    'meta_key' => '_post_like_count', 
    'orderby' => 'meta_value_num', 
    'order' => 'DESC', 
    posts_per_page' => '3',    
); 

И $ арга выше вернуть результаты - только не результаты сообщений с наиболее нравится.

Может ли кто-нибудь помочь?

+0

Вы уверены, что номер ключа верной? – rnevius

+0

Да, я дважды проверил это несколько раз. Это сводит меня с ума! – MikeeeGeee

+0

Чтобы проверить, у него есть лидирующий символ подчеркивания? Я не могу понять, почему он не вернет правильные результаты ... Кроме того, являются ли метазначения только цифрами (без слов)? – rnevius

ответ

1

Я провел много времени с мета-запросами, и это обычно усложняет ситуацию.

Мой совет будет использовать прямое подключение к базе данных через $ wpdb, поскольку это намного проще. Возьмите это как старт:

global $wpdb; 
$posts_with_most_likes = $wpdb->get_results(
       " 
       SELECT _post_like_count 
       FROM $wpdb->postmeta 
       ORDER BY meta_value_num 
       " 
      ); 
0

Спасибо Loai Nagati. Я изменил ваш ответ на следующие, которые отлично работали.

$posts_with_most_likes = $wpdb->get_results(
    " 
    SELECT post_id 
    FROM $wpdb->postmeta 
    WHERE meta_key = '_post_like_count' 
    ORDER BY meta_value DESC 
    LIMIT 3 
    " 
); 

Еще раз спасибо!

+0

Удовольствие. Я предлагаю придерживаться прямых подключений к базам данных, имея дело с meta_key (и, возможно, много запросов), чтобы упростить задачу. –

+0

Достаточно честный. Я просто не понимаю, почему WP имеет мета-параметры в WP_query, если он работает неправильно. Его сразу после этого запроса выше я должен получить данные страницы из идентификатора сообщения, который он возвращает, а затем перебирать те, которые кажутся довольно медлительными. Еще раз спасибо. – MikeeeGeee

+0

Конечно, он может работать для ваших индивидуальных потребностей. С этим труднее справиться, чем с прямым подключением к БД. –

Смежные вопросы