2015-11-19 3 views
0

Я пытаюсь поднять сообщения из пользовательского типа сообщения и пользовательской таксономии. я использовал следующий запрос для достижения этой цели:WP-Query orderby rand с пользовательским типом сообщения и пользовательской таксономией возвращает упорядоченный вывод

$term_list = wp_get_post_terms($post->ID, 'influencers', array("fields" => "all")); 
$the_query = new WP_Query(array(
    'posts_per_page' => -1, 
    'post_status' => 'publish', 
    'post_type' => 'influencer', 
    'orderby' => 'rand', 
    'tax_query' => array(
     array(
       'taxonomy' => 'influencers', 
       'field' => 'slug', 
       'terms' => $term_list[0]->slug, 
      ) 
     ), 
    ) 
); 

Когда я использую $ the_query-> Запрос

print_r($the_query->request); 

для печати SQL я получаю следующий результат:

SELECT wp_posts.* FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND (wp_term_relationships.term_taxonomy_id IN (47329)) AND wp_posts.post_type = 'influencer' AND ((wp_posts.post_status = 'publish')) GROUP BY wp_posts.ID ORDER BY RAND() 

Кажется законным, верно? Я даже отправился в базу данных и попробовал запрос, он отлично работает с рандомизацией и каждый раз возвращает записи в случайном порядке.

First try with the query Second try with the query

Но по какой-то причине, когда я пытаюсь срывать массив в идентификаторах:

$post_ids = wp_list_pluck($the_query->posts, 'ID'); 
print_r($post_ids); 

Я получаю массив в том же порядке, каждый раз, когда:

Array ([0] => 267133 [1] => 267137 [2] => 267139 [3] => 267141 [4] => 267143) 

Когда я пытаюсь поставить WP_Query в цикле:

while ($the_query->have_posts()) { 
    $the_query->the_post(); 
    //code to display loop 
} 
wp_reset_postdata(); 

Он также возвращает сообщения в организованном порядке, каждый раз.

Любая идея, как заставить WP_Query возвращать сообщения в рандомизированном порядке, без применения внешних функций?

Спасибо!

ответ

1

Проверьте, не установлен ли плагин заказа сообщений, который может привести к тому, что функция orderby = rand не работает. Также, если вы используете свой сайт в WP Engine, сообщается, что эта функция отключена на сервере и должна быть включена.

EDIT: проверка this site explaining where to find that option, в любом случае это рандомизация производительность убийца, но я думаю, вы понимаете, что

+0

Я бегу на WP-Engine. Какую функцию нужно активировать? –

+0

check [этот сайт объясняет, где найти эту опцию] (http://wpexplorer-themes.com/total/docs/random-order-wpengine/), в любом случае эта рандомизация является убийцей производительности, но я думаю, вы понимаете, что – okolimar

+0

Спасибо , Мне нужно было это для конкретного проекта, теперь он отлично работает:> –

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

  • Нет связанных вопросов^_^