Come Modificare il Loop per Ordinare gli Articoli per Visualizzazioni (usando il plugin wp-postviews)

12 gen 2011, 13:58:23
Visualizzazioni: 29.4K
Voti: 4

Spero che qualcuno sia così gentile da aiutarmi. Attualmente ho una pagina che ordina tutti gli articoli per numero di commenti, ma voglio modificare il loop per ordinare gli articoli per numero di visualizzazioni. Ho installato il plugin 'wp-postviews.1.50' e sono riuscito a visualizzare il numero di visualizzazioni su ogni articolo, quindi so che quella parte funziona, ora ho solo bisogno di modificare il codice del loop per ordinare per maggior numero di visualizzazioni, è possibile?

Questo è il modo in cui viene richiamato il numero di visualizzazioni:

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

Ed ecco il loop che deve essere modificato:

<?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', // ordina per numero di commenti
'order' => 'DESC', // ordine decrescente
); ?>
<?php query_posts($args); ?>
<?php if (have_posts()) : while (have_posts()) : the_post() ;?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">

Grazie in anticipo per qualsiasi aiuto.

Sto usando WordPress 3.0.4.

0
Tutte le risposte alla domanda 4
1

Volevo solo fornire un aggiornamento. Qualcuno è stato così gentile da mostrarmi come aggiornare il codice che ho pubblicato sopra. Si è rivelato abbastanza semplice (se sai cosa stai facendo!). Quindi l'ho pubblicato qui sotto per chiunque voglia fare qualcosa di simile.

<?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 gen 2011 11:10:24
Commenti

Grazie, mi hai aiutato!

M4theuz M4theuz
3 apr 2018 06:21:32
3

Dalla documentazione del plugin

Per visualizzare i post più visti usa:

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

Il primo valore che passi determina cosa vuoi ottenere, 'post', 'page' o 'both'. Il secondo valore che passi è il numero massimo di post che vuoi ottenere.

Predefinito: get_most_viewed('both', 10);

12 gen 2011 14:14:29
Commenti

Grazie per la risposta. Capisco come ottenere un elenco dei post, quello con cui ho difficoltà però è come modificare il loop che ho postato sopra per ottenere i post in ordine di visualizzazioni.

PG73 PG73
12 gen 2011 14:44:45

Dovrai aggiungere un ordinamento personalizzato al parametro order_by. Dai un'occhiata a questo: http://www.gab.ro/post-sorting-reloaded/ che è un plugin che 'avvolge il filtro posts_orderby' per qualche idea. Tuttavia, sembra che posts_orderby sia stato deprecato - quindi potresti dover fare attenzione lì

anu anu
12 gen 2011 15:19:24

Grazie, darò un'occhiata. Speravo però che qualcuno qui avesse già fatto qualcosa di simile in passato e potesse mostrarmi esattamente come il mio codice sopra dovrebbe essere modificato. Da quello che dici però non sembra un compito semplice.

PG73 PG73
12 gen 2011 18:32:45
0

Prova con questo:

$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 mar 2011 10:12:11
1

L'ho fatto in questo modo molto bene :)

<?php $args = array(
  'posts_per_page' => 4,                  // Numero di post da mostrare
  'category_name' => 'xyz',               // Slug della categoria
  'meta_key' => 'views',                  // Campo personalizzato per le visualizzazioni
  'orderby' => 'meta_value_num',          // Ordinamento per valore numerico
  'order' => 'DESC',                      // Ordine decrescente
  'post_status' => 'publish'              // Mostra solo post pubblicati
); ?>
1 lug 2015 00:19:02
Commenti

Per favore aggiungi qualche spiegazione. Spiega perché il tuo codice dovrebbe funzionare.

Nilambar Sharma Nilambar Sharma
1 lug 2015 06:50:32