Ho notato che son molti i blog che hanno un widget dedicato ai post più popolari non secondo le visite rilevate su ogni post, ma bensì secondo il numero di commenti.
A prescindere che la reputo una classificazione corretta (i commenti son sempre un fattore importante che dà lustro all’articolo), volevo solo consigliarvi un metodo alternativo per ottenere tale risultato. Infatti, nella stragrande maggioranza dei casi ci si affida ad un plugin, ma per snellire il vostro Wordpress, basterebbero davvero poche righe di codice (php+sql+css) per ottenere un ottimo impatto.
Ad esser sinceri, alcuni mesi fà avevo scritto sullo stesso argomento, ma questo tipo di approccio risulta nettamente più snello ed elegante.
Sfruttiamo, infatti, la class Wpdb che Wordpress ci mette a disposizione per interagire con il database passando alla funzione get_results() una query ben precisa:
$pop = $wpdb->get_results("SELECT id, post_title, comment_count FROM {$wpdb->prefix}posts WHERE post_type='post' ORDER BY comment_count DESC LIMIT 10");
Come sapete, WordPress vi consente di scegliere un prefisso per le tabelle del vostro database (di solito wp_) e per evitare errori meglio recuperarlo dinamicamente usando {wpdb->prefix}posts. Nel mio caso risulta, infatti, “wp_posts”.
Una volta eseguita la query SQL, potreste usare un banale foreach per filtrare i risultati e mostrarli dove desiderate :
$pop = $wpdb->get_results("SELECT id, post_title, comment_count FROM {$wpdb->prefix}posts WHERE post_type='post' ORDER BY comment_count DESC LIMIT 10");
foreach($pop as $post) : ?>
<li> <?php echo $post->post_title; ?> </li>
<?php endforeach; ?>
Per un ripassino sul foreach potete rileggere il mio articolo sulle iterazioni in php mentre qualora vi occorresse, oltre il titolo del post, anche il relativo permalink, non dovrete fare altro che usare il metodo get_permalink($post->id).


Vincenzo - 7 luglio 2010
Salve Daniele,
e se volessi mostrare gli articoli più popolari, dove per popolari intendo quelli più visti o più letti?
Grazie!
Vincenzo - 7 luglio 2010
Pardon, Pecciola.
Pecciola - 7 luglio 2010
@Vincenzo : esistono molti plugin come questo o altri simili o volevi realizzarlo via codice?
Vincenzo - 7 luglio 2010
Via codice sarebbe l’ideale…
La mia idea era quella di sostituire, o aggiungere al loop normale di wordpress del codice che mostrasse solo gli N articoli più letti, lasciandomi quindi la massima libertà di personalizzare poi gli articoli (usando magari il php the_title, content etc…)
Hai qualche idea? Grazie!!
Pecciola - 7 luglio 2010
Si certo, via codice ti lascia libertà maggiore. Non so perché, ma facendo una veloce ricerca su tutti i blog è mostrato come mostrare i post più commentati (e non più letti) via codice.
Probabilmente così banale non è…indago un pò domani e magari ci faccio un post se riesco a trovare una soluzione possibile!
Vincenzo - 7 luglio 2010
Eh infatti, imho una soluzione potrebbe essere quella di personalizzare uno dei plugin che mostrano gli articoli più letti, oppure prenderci spunto per scrivere un codice ad hoc, ma non conoscendo il php benissimo, non posso smanettarci….
Attendo fiducioso una tua soluzione, grazie mille!
Vincenzo - 7 luglio 2010
ps: Pecciola hai un account skype o msn?
Cominciando a sviluppare temi ho alcuni dubbi che vorrei levarmi, ti lascio intanto la mia mail così ne parliamo in privato se vuoi: vinc.dicicco@gmail.com
Grazie, saluti