Как изменить цикл для сортировки записей по просмотрам (используя плагин wp-postviews)
Надеюсь, кто-нибудь сможет помочь. У меня есть страница, которая сортирует все записи по количеству комментариев, но я хочу изменить цикл, чтобы сортировать записи по количеству просмотров. Я установил плагин '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.
Хотел дать небольшое обновление. Один добрый человек показал мне, как обновить код, который я опубликовал выше. Оказалось, всё довольно просто (если знаешь, что делаешь!). Поэтому я размещаю его ниже для тех, кто хочет сделать что-то подобное.
<?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(); ?>">

Из документации плагина
Для отображения самых просматриваемых записей используйте:
<?php if
(function_exists('get_most_viewed')):
?>
<ul>
<?php get_most_viewed(); ?>
</ul> <?php endif; ?>
Первый передаваемый параметр определяет, что вы хотите получить: 'post' (записи), 'page' (страницы) или 'both' (и то, и другое). Второй параметр задает максимальное количество записей для вывода.
По умолчанию: get_most_viewed('both', 10);

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

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

Попробуйте этот код:
$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(); ?>
