Cum să modifici Loop-ul pentru a ordona articolele după numărul de vizualizări (folosind pluginul wp-postviews)

12 ian. 2011, 13:58:23
Vizualizări: 29.4K
Voturi: 4

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.

0
Toate răspunsurile la întrebare 4
1

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(); ?>">
14 ian. 2011 11:10:24
Comentarii

Mulțumesc, m-ai ajutat!

M4theuz M4theuz
3 apr. 2018 06:21:32
3

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);

12 ian. 2011 14:14:29
Comentarii

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.

PG73 PG73
12 ian. 2011 14:44:45

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.

anu anu
12 ian. 2011 15:19:24

Mulțumesc, o să arunc o privire. Speram însă că cineva de aici a făcut ceva similar în trecut și ar putea să-mi arate exact cum ar trebui modificat codul meu de mai sus. Din ce spui, nu pare o sarcină simplă.

PG73 PG73
12 ian. 2011 18:32:45
0

Î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(); ?>
2 mar. 2011 10:12:11
1

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
); ?>
1 iul. 2015 00:19:02
Comentarii

Te rog să adaugi o explicație. Explică de ce ar trebui să funcționeze codul tău.

Nilambar Sharma Nilambar Sharma
1 iul. 2015 06:50:32