Intereting Posts
Вычислить данные и перейти к теме ACF datepicker meta_query Сравнение Даты в m / d / Y g: ia – Не в формате Ymd Плагин для загрузки Android Marketplace? Как ускорить мой сайт Сообщение с защитой паролем или страница – сообщение об ошибке по неверному паролю? Установка статической домашней страницы и страницы блога без использования настроек Несколько шаблонов для пользовательских типов сообщений Добавление разбивки на страницы в пользовательский шаблон, который использует пользовательские типы сообщений? pre_user_query meta_query список пользователей admin Поддержка информации в бэкэнд Создает только одну таблицу, а не другую Листинг страниц с флажками В метабоксе (и их сохранении) Dequeue скрипты и стили только для определенного типа пользовательских сообщений Как правильно изменить количество столбцов в двадцать четвертой детской теме? Pagination не работает с пользовательским запросом

Отображать сообщение запроса на основе двух значений orderby в wordpress

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

Вот код, который я пробовал:

 $popularpost = new WP_Query( array( 'category' => 'comedy', 'posts_per_page' => 4, 'meta_key' => 'post_views_count', 'orderby' => array ('meta_value_num', 'rand'), //this is the one I want both rand & meta_value_num to retrieve 'order' => 'DESC' ) ); while ( $popularpost->have_posts() ) : $popularpost->the_post(); the_permalink(); the_title(); if ( has_post_thumbnail() ): the_permalink(' ');the_title(); the_post_thumbnail(); endif; the_excerpt(); // echo the excerpt endwhile; 

Все работает, за исключением того, что оно не получается случайно. Тот же пост всегда отображается.

Я думаю, вам может быть очень легко получить 25 лучших на основе количества просмотров, а затем получить случайный выбор из 4 из этого списка.

Ниже вы можете легко протестировать запрос, но вы захотите заменить его только своим запросом post_views_count и удалить любой post_views_count rand .

 // get top 25 $posts = get_posts( array ( 'post_type' => array ( 'post' ), 'posts_per_page' => 25, 'fields' => 'ids', ) ); // randomize the top 25 shuffle( $posts ); // pull to first 4 items $posts = array_slice( $posts, 0, 4 ); // show the results echo "<pre>"; foreach ( $posts as $post_id ) { echo get_the_title( $post_id ) . PHP_EOL; } 

По вашему запросу:

 // query the top posts $popularpost = new WP_Query( array( 'category' => 'comedy', 'posts_per_page' => 25, // top 25 'meta_key' => 'post_views_count', 'orderby' => array ('meta_value_num'), 'order' => 'DESC' ) ); // randomize the items shuffle($popularpost->posts); // limit the the number of posts $popularpost->posts = array_slice( $popularpost->posts, 4); // random 4 posts // output while ( $popularpost->have_posts() ) : $popularpost->the_post(); the_permalink(); the_title(); if ( has_post_thumbnail() ): the_permalink(' ');the_title(); the_post_thumbnail(); endif; the_excerpt(); // echo the excerpt endwhile;