I hope somebody would be kind enough to help. I currently have a page that orders all of the posts by comment count, but I want to change the loop to order the posts by view count. I have installed the ‘wp-postviews.1.50’ plugin and have got it to display the number of views on each post, so I know that side of it is working, now I just need the loop code changed to order by most views, is this possible?
This is the how the number of views is called out:
<?php $views = get_post_meta($post->ID, 'views', true); ?><?php echo $views; ?>
And here is the loop I need changed:
<?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(); ?>">
Thanks in advance for any help with this.
I’m using WordPress 3.0.4.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Just wanted to give an update. Someone was kind enough to show me how to update the code I posted above. It turned out to be quite simple (if you know what you’re doing!). So I have posted it below for anyone that wants to do something similar.
<?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(); ?>">
Method 2
From the plugin documentation
To Display Most Viewed Posts Use:
<?php if
(function_exists('get_most_viewed')):
?>
<ul>
<?php get_most_viewed(); ?>
</ul> <?php endif; ?>
The first value
you pass in is what you want to get,
‘post’, ‘page’ or ‘both’. The second
value you pass in is the maximum
number of post you want to get.Default: get_most_viewed(‘both’, 10);
Method 3
Try with this:
$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(); ?>
Method 4
I’ve made it this way pretty nicely 🙂
<?php $args = array( 'posts_per_page' => 4, 'category_name' => 'xyz', 'meta_key' => 'views', 'orderby' => 'meta_value_num', 'order' => 'DESC', 'post_status' => 'publish' ); ?>
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0