Как изменить цикл для сортировки записей по просмотрам (используя плагин wp-postviews)

12 янв. 2011 г., 13:58:23
Просмотры: 29.4K
Голосов: 4

Надеюсь, кто-нибудь сможет помочь. У меня есть страница, которая сортирует все записи по количеству комментариев, но я хочу изменить цикл, чтобы сортировать записи по количеству просмотров. Я установил плагин 'wp-postviews.1.50' и настроил отображение количества просмотров для каждой записи, так что эта часть работает, теперь мне просто нужно изменить код цикла для сортировки по наибольшему количеству просмотров, это возможно?

Вот как вызывается количество просмотров:

<?php $views = get_post_meta($post->ID, 'views', true); ?><?php echo $views; ?>

А вот цикл, который нужно изменить:

<?php $posts_per_page = get_query_var('posts_per_page'); ?>
<?php $paged = intval(get_query_var('paged')); ?>
<?php $paged = ($paged) ? $paged : 1; ?>
<?php $args = array(
'posts_per_page' => $posts_per_page,
'paged' => $paged,
'more' => $more = 0,
'orderby' => 'comment_count', // сортировка по количеству комментариев
'order' => 'DESC', // в порядке убывания
); ?>
<?php query_posts($args); ?>
<?php if (have_posts()) : while (have_posts()) : the_post() ;?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">

Заранее спасибо за любую помощь.

Я использую WordPress 3.0.4.

0
Все ответы на вопрос 4
1

Хотел дать небольшое обновление. Один добрый человек показал мне, как обновить код, который я опубликовал выше. Оказалось, всё довольно просто (если знаешь, что делаешь!). Поэтому я размещаю его ниже для тех, кто хочет сделать что-то подобное.

<?php $posts_per_page = get_query_var('posts_per_page'); ?>
<?php $paged = intval(get_query_var('paged')); ?>
<?php $paged = ($paged) ? $paged : 1; ?>
<?php $args = array(
'posts_per_page' => $posts_per_page,
'paged' => $paged,
'more' => $more = 0,
'meta_key' => 'views',
'orderby' => 'meta_value_num',
'order' => 'DESC',
); ?>
<?php query_posts($args); ?>
<?php if (have_posts()) : while (have_posts()) : the_post() ;?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
14 янв. 2011 г. 11:10:24
Комментарии

Спасибо, помогло!

M4theuz M4theuz
3 апр. 2018 г. 06:21:32
3

Из документации плагина

Для отображения самых просматриваемых записей используйте:

<?php if
(function_exists('get_most_viewed')):
?>
<ul>
      <?php get_most_viewed(); ?>    
</ul> <?php endif; ?> 

Первый передаваемый параметр определяет, что вы хотите получить: 'post' (записи), 'page' (страницы) или 'both' (и то, и другое). Второй параметр задает максимальное количество записей для вывода.

По умолчанию: get_most_viewed('both', 10);

12 янв. 2011 г. 14:14:29
Комментарии

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

PG73 PG73
12 янв. 2011 г. 14:44:45

Вам нужно добавить пользовательскую сортировку к параметру order_by. Посмотрите на это: http://www.gab.ro/post-sorting-reloaded/ - это плагин, который "оборачивает фильтр posts_orderby" для некоторых идей. Однако, похоже, что posts_orderby устарел - так что вам, возможно, нужно быть осторожным здесь.

anu anu
12 янв. 2011 г. 15:19:24

Спасибо, я посмотрю. Хотя я надеялся, что кто-то здесь уже делал что-то подобное в прошлом и мог бы показать мне, как именно нужно изменить мой код выше. Но из того, что вы сказали, это не звучит как простая задача.

PG73 PG73
12 янв. 2011 г. 18:32:45
0

Попробуйте этот код:

$args=array(
 'posts_per_page'      => 15, 
 'post_type'     => 'post', 
 'key' => 'views',
 'orderby' => 'meta_value_num', 
 'order'    => 'ASC',
 'post_status' => 'publish'
);

query_posts($args); ?>
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
2 мар. 2011 г. 10:12:11
1

Я реализовал это довольно изящно :)

<?php $args = array(
  'posts_per_page' => 4,
  'category_name' => 'xyz',
  'meta_key' => 'views',
  'orderby' => 'meta_value_num',
  'order' => 'DESC',
  'post_status' => 'publish'
); ?>
1 июл. 2015 г. 00:19:02
Комментарии

Пожалуйста, добавьте пояснение. Объясните, почему ваш код должен работать.

Nilambar Sharma Nilambar Sharma
1 июл. 2015 г. 06:50:32