WordPress: visualizzare i post più popolari di una categoria senza alcun plugin

Esistono fondamentalmente due plugin per WordPress che consentono di mostrare i post più visti e/o più popolari di un blog: WordPress Popular Posts e WP PostViews. Entrambi non sono aggiornati all’ultima versione di WordPress, ma funzionano comunque, tuttavia non permettono una cosa che ho sempre cercato: la visualizzazione dei post più popolari/visti per categoria.

WordPress Popular Posts dà la possibilità di escludere delle categorie ma non consente invece solo di selezionarne alcune, WP PostViews invece permette di visualizzare i più visti per categoria ricorrendo a una sua funzione non molto nota. Questa possibilità è accessibile non attraverso il widget del plugin ma solo attraverso una funzione che però è abbastanza limitata, non permette ad esempio di dare un range temporale ai più post più visti visualizzabili. La funzione di Wp PostViews è richiamabile così:

<?php get_most_viewed_category(3415, 'post', 5); ?>

Così mi sono messo a cercare qualcosa che potesse evitarmi di utilizzare un plugin o ancora peggio di modificare uno dei due menzionati. Ho trovato qualcosa di molto vicino a quello che cercavo qui, ecco lo snippet:

<?php
$args=array(
'cat' => 3,
'orderby' => 'comment_count',
'order' => 'DESC',
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 6,
'caller_get_posts'=> 1
);
$my_query = null;
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) { ?>
<ul>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php }

wp_reset_query(); ?>

Va sostituto il “3” in ‘cat’ => 3, con l’ID della categoria di cui si vogliono visualizzare i post più popolari e eventualmente il numero di post da visualizzare ‘posts_per_page’ => 6,

Anche così mancava qualcosa, cioè la restrizione dei post a un range temporale, ad esempio i più popolari degli ultimi 30 giorni, ecco che per apportare questa modifica mi è venuto in aiuto Napolux che mi ha dato la soluzione in un thread su Friendfeed postando il codice modificato dello snippet limitando il range dei post più popolari:

<?php

$args=array(

'cat' => 3416,

'orderby' => 'comment_count',

'order' => 'DESC',

'post_type' => 'post',

'post_status' => 'publish',

'posts_per_page' => 6,

'caller_get_posts'=> 1

);

// 30 giorni indietro

function filter_where( $where = '' ) {

$where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";

return $where;

}

add_filter( 'posts_where', 'filter_where' );

$my_query = null;

$my_query = new WP_Query($args);

if( $my_query->have_posts() ) { ?>

<ul>

<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>

<?php endwhile; ?>

</ul>

<?php }

wp_reset_query(); ?>

Un commento su “WordPress: visualizzare i post più popolari di una categoria senza alcun plugin

I commenti sono chiusi.