Cum să modifici Loop-ul pentru a ordona articolele după numărul de vizualizări (folosind pluginul wp-postviews)
Sper că cineva ar putea să mă ajute. În prezent am o pagină care ordonează toate articolele după numărul de comentarii, dar vreau să schimb bucla pentru a ordona articolele după numărul de vizualizări. Am instalat plugin-ul 'wp-postviews.1.50' și am reușit să afișez numărul de vizualizări pentru fiecare articol, deci știu că această parte funcționează, acum am nevoie doar să modific codul buclei pentru a ordona după cele mai multe vizualizări, este posibil acest lucru?
Așa este apelat numărul de vizualizări:
<?php $views = get_post_meta($post->ID, 'views', true); ?><?php echo $views; ?>
Și aici este bucla pe care trebuie să o modific:
<?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(); ?>">
Mulțumesc anticipat pentru orice ajutor în această privință.
Folosesc WordPress 3.0.4.

Am vrut doar să ofer o actualizare. Cineva a fost destul de amabil să-mi arate cum să actualizez codul pe care l-am postat mai sus. S-a dovedit a fi destul de simplu (dacă știi ce faci!). Așa că l-am postat mai jos pentru oricine dorește să facă ceva 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(); ?>">

Din documentația plugin-ului
Pentru a afișa postările cele mai vizualizate, utilizați:
<?php if
(function_exists('get_most_viewed')):
?>
<ul>
<?php get_most_viewed(); ?>
</ul> <?php endif; ?>
Prima valoare pe care o transmiteți reprezintă ce doriți să obțineți: 'post', 'page' sau 'both' (ambele). A doua valoare reprezintă numărul maxim de postări pe care doriți să le obțineți.
Valoare implicită: get_most_viewed('both', 10);

Mulțumesc pentru răspuns. Înțeleg cum să obțin o listă de articole, dar mă chinui să înțeleg cum să modific bucla pe care am postat-o mai sus pentru a obține articolele în ordinea celor mai vizualizate.

Va trebui să adaugi o sortare personalizată parametrului order_by. Aruncă o privire aici: http://www.gab.ro/post-sorting-reloaded/ care este un plugin ce 'înfășoară filtrul posts_orderby' pentru câteva idei. Totuși, se pare că posts_orderby a fost învechit - deci ar fi bine să fii atent acolo.

Încearcă cu aceasta:
$args=array(
'posts_per_page' => 15, // Numărul de articole de afișat
'post_type' => 'post', // Tipul postării
'key' => 'views', // Cheia meta pentru vizualizări
'orderby' => 'meta_value_num', // Ordonează după valoare numerică
'order' => 'ASC', // Ordine crescătoare
'post_status' => 'publish' // Doar postări publicate
);
query_posts($args); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

Am făcut-o în felul acesta și a ieșit destul de bine :)
<?php $args = array(
'posts_per_page' => 4, // Numărul de articole de afișat
'category_name' => 'xyz', // Slug-ul categoriei
'meta_key' => 'views', // Cheia meta pentru sortare (vizualizări)
'orderby' => 'meta_value_num', // Sortează după valoare numerică
'order' => 'DESC', // Ordine descrescătoare
'post_status' => 'publish' // Doar articole publicate
); ?>
