jblog: news e appunti per webmaster
POST PRECEDENTE
 

Immagine: plugin per post e pagine casualiA primo impatto avere una lista di post casuali potrebbe sembrarti inutile. Infatti quando un lettore entra in un blog sa già cosa cercare oppure ci è arrivato tramite un motore di ricerca. Allora, perché dovresti inserire una lista di post casuali?

Vantaggi

  • leggendo libri sull’usabilità dei siti web ho imparato che gli utenti sono molto pigri ma allo stesso tempo molto curiosi; allora ho pensato che se un lettore vuole leggere altri articoli è troppo pigro per ritornare nella homepage o nell’archivio, ma non per consultare una lista pronta di articoli da raggiungere con pochi click
  • se hai inserito il plugin “post correlati” hai sicuramente notato che a volte ci sono pochi articoli correlati; è proprio in questi casi che torna utile avere una lista alternativa, da mostrare automaticamente quando articoli correlati
  • gli appassionati di seo e guadagni online avranno subito pensato agli effetti in termini di tempo di permanenza; infatti invogliando gli utenti a visitare altre sezioni del sito o leggere altri articoli, ad esempio, avresti un aumento delle pagine viste con piacevoli conseguenze sul conto ad-sense ;-)
  • quando un nuovo (e potenziale) lettore capita nel tuo blog è importante aiutarlo a scoprire il blog e gli articoli che scrivi; a tal proposito sarebbe vantaggioso avere il blocco “post in evidenza”, con gli articoli, secondo te, qualitativamente migliori

Svantaggi

  • il database ha un’ulteriore query da eseguire
  • anche se di poco, dovrai modificare il design della pagina (operazione non gravosa se hai già l’area riservata ai “post correlati”)

Casuali, ma non troppo

L’autore del plugin, Yakup GÖVLER, ha avuto la bellissima idea di far selezionare (opzionalmente) i post appartenenti alle stesse categorie del post principale. Secondo me è veramente un’ottima caratteristica perché si mantiene comunque un certo collegamento con il post che si sta leggendo.

Il plugin

L’autore del plugin originale è Yakup GÖVLER. Poiché non ero completamente soddisfatto dalla versione originale ho modificato solo la funzione principale. Infatti la mia versione non può essere gestita dal pannello di controllo, quindi è necessario entrare nei file del tema per modificare le opzioni.

Caratteristiche del plugin originale

  • gestione del plugin nel pannello di controllo
  • scelta del numero di post (da 1 a 20)
  • selezione delle categorie dei post da stampare
  • stampa dei post appartenenti alle stesse categorie del post che si sta leggendo
  • selezione di id, link e titolo di ogni singolo post

Caratteristiche della mia versione del plugin

  • unica funzione php da richiamare e configurare all’interno dei file di template
  • scelta del numero di post (da 1 a 20)
  • selezione delle categorie dei post da stampare
  • stampa dei post appartenenti alle stesse categorie del post che si sta leggendo
  • selezione di id, link, titolo e contenuto di ogni singolo post
  • scelta del tipo di post tra “post” e “page”, o entrambi
  • scelta del post genitore della pagina
  • impostazione della lunghezza del contenuto del post
  • segnalazione dei post da includere ed escludere, con l’opzione di stampare per primi i post inclusi

Guida all’utilizzo

La particolarità di questo plugin (nella mia versione) è che non stampa automaticamente la lista dei post, ma restituisce un array associativo da gestire a tuo piacimento. Per utilizzare la funzione all’interno del template bisogna avere un array in cui inserire i risultati della funzione. Ecco un esempio:

<?php
$random_posts = jblog_random_posts("limit=15&current_cat=1&len=200&post_type=post|page");
/*
- limit=15: recupera fino a 15 post
- current_cat=1: recupera i post di tipo "post" appartenenti alle stesse categorie del post che si sta leggendo
- len=200: seleziona anche il contenuto, in particolare i primi 200 caratteri
- post_type=post|page: recupera i post di tipo "post" e di tipo "page"
*/

foreach($random_posts as $random_post) { ?>
<h5><a href="<? echo $random_post['link']; ?>"><? echo $random_post['title']; ?></a></h5>
<? echo $random_post['content']; ?>
<?php } ?>

Parametri della funzione

Come hai potuto notare, la funzione ha un unico parametro di tipo stringa in cui vengono passate le opzioni (nella forma [opzione]=[valore]) separate da “&”.

post_type
Tipo dei post: “post”, “page”, “both” (entrambi). Default: “post”.
post_parent
ID del genitore del post. Valido solo se post_type=”page” o post_type=”both”. Default: “0″.
limit
Numero di post da selezionare. Impostare a “0″ per stampare tutti i post. Default: “10″.
cats
ID delle categorie alle quali devono appartenere i post da selezionare. Valido solo se post_type=”post” o post_type=”both”.
currentcat
Impostare a “1″ per selezionare tutti i post appartenenti alle categorie del post che si sta leggendo. Valido solo se post_type=”post” o post_type=”both”. Default: “0″.
len
Lunghezza del contenuto dei post. Impostare con un numero maggiore di “0″ per stampare il contenuto. Default: “0″ (quindi non viene restituito il contenuto).
exclude
ID dei post da escludere.
include
ID dei post da includere.
include_top
Impostare a “1″ per inserire nelle prime posizioni i post specificati da “include”. Default: “0″.

Valori restituiti dalla funzione

Il plugin non prevede la stampa automatica dell’elenco dei post, ma dovrai provvedere a scrivere un ciclo per la stampa degli elementi. L’array che viene restituito è un array di array associativi. Un array associativo invece degli indici numerici ha indici di tipo stringa (molto più user-friendly). In particolare, questo array ha quattro indici: id, link, title e content (se len>0), utilizzati nell’esempio precedente.

Analisi del codice

Vorrei fare alcune considerazioni sul codice, soprattutto perché potrei aiutarti nel caso volessi effettuare ulteriori modifiche.

Composizione della query. Ho avuto modo di provare diverse tecniche per comporre una query durante il controllo e l’impostazione dei parametri. Durante la modifica di questo plugin ho utilizzato un array associativo (chiamato $sql). Ogni indice corrisponde a una determinata sezione della query (“post_type”, “include”, “limit”, ecc.). La comodità consiste nell’avere una singola variabile (anche se complessa) da impostare nelle varie parti del codice e da utilizzare alla fine per comporre la query da eseguire.

Funzioni di wordpress. Quando si sviluppa un plugin o si scrive una funzione da richiamare all’interno di wordpress è consigliabile sfruttare le funzioni predefinite come wp_parse_args, apply_filters, ecc. La prima serve per la lettura dell’unico parametro, $args, e la seconda per applicare un determinato filtro a una stringa. In particolare, la funzione apply_filters è stata utilizzata per la formattazione del titolo: apply_filters('the_title', $post->post_title).

Vuoi modificare ulteriormente il plugin? In effetti potresti aver bisogno di stampare altri dati. Allora ti consiglio di analizzare la variabile $post all’interno del ciclo foreach (in fondo alla funzione) per scoprire gli altri dati relativi al singolo post da inserire in un nuovo indice dell’array di array associativi. Ricordati di utilizzare gli opportuni filtri e le opportune funzioni per evitare brutte sorprese!!!

Prossimamente…

Onestamente non credo che questa mia funzione si possa definire “plugin”. Tuttavia farò di tutto per sviluppare una versione migliore cioè priva il più possibile di errori, con più opzioni e gestibile interamente dal pannello di controllo.

Download

Puoi scaricare il file del plugin qui.

Crediti

Hai domande o suggerimenti da fare? Si sono verificati malfunzionamenti o errori? Vorresti un po’ di aiuto per effettuare particolari modifiche?

Articoli correlati
Articoli casuali (stesse categorie)
Commenti
Trackbacks
.1
27 Maggio 2009 alle 15:20

Davvero bravo !

Appena posso provo il plugin.
Ciao.

Puoi usare questi tag:   <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

ATTENZIONE. Se inserisci più di 2 link il commento verrà messo in coda, quindi non sarà visibile subito.

jblog: news e appunti per webmaster