Una funzionalità che può spesso tornare utile sul vostro blog WordPress è quella di inserire un testo alla fine di alcuni post, in modo automatico.
Ad esempio, una buona idea per incrementare i nostri guadagni può essere quella di inserire una breve frase, con tanto di link al programma di affiliazione, sotto tutti i post di una certa categoria.
Oppure potrebbe servirci mettere una firma o dei link solamente sotto i post di un determinato autore.
Ovviamente sarebbe abbastanza scomodo farlo a mano, vediamo quindi come inserirli in modo del tutto automatico.
Ci sono due modi: le funzioni che seguono potete o metterle in un file a parte e creare così un plugin che andrà attivato come tutti gli altri, oppure inserirle nel file functions.php del vostro tema.
Per prima cosa andiamo a sfruttare il filtro sul the_content e ci aggangiamo una nuova funzione che chiameremo aggiungi_link:
Da notare in particolare il terzo parametro: quell’1 indica l’ordine di priorità con cui il filtro andrà applicato, se ci sono altre funzioni che agiscono sullo stesso elemento. Se, ad esempio, avete altri plugin come ShareThis o OKNOtizie, in questo modo il testo che aggiungeremo comparirà prima delle cose aggiunte da questi altri plugin.
Vediamo ora la funzione vera e propria per inserire un testo, in base alla categoria:
global $post;
$category = get_the_category();
$cat = $category[0]->term_id;
if($cat == 189){
$content .= 'Testo da inserire';
}
return $content;
}
Il funzionamento è molto semplice: se il post si trova nella categoria numero 189, aggiunge alla fine il testo tra virgolette.
Ecco, invece, come inserire un testo a seconda dell’autore:
global $post;
$id = get_the_author_id();
if($id == 2){
$content .= 'Testo da inserire';
}
return $content;
}
Ovviamente entrambe le funzioni sono personalizzabili, potete cambiare gli id e i testi da aggiungere. Infine, potete anche fonderle in una unica funzione e sftruttare entrambe le condizioni.
Penso sia tutto. Se ci sono domande o problemi, lasciate pure un commento.
UPDATE 26/01/2009
Se preferite non scrivere neanche una riga di codice, ho creato un plugin per WordPress che implementa questo semplice trick. Si chiama Add2post.
22 Commenti












Ciao, scusami non mi è chiara una cosa:
la riga:
add_filter(‘the_content’, ‘aggiungi_link’, 1);
ddove va inserita?
E se il resto lo volessi mettere come plugin, facendo in modo ovviamente che sia riconosciuto come plugin? L’id dell’utente, nel caso della creazione del plugin per l’inserimento di testo in base all’utente che pubblica, posso metterlo anche inserendo proprio l’username, per esempio “utenteprova”?
Scusa le tante domande, aspetto notizie, ciao e auguri!
Ciao, Paolo. Dunque:
1) La riga add_filter devi inserirla appena primo o subito dopo la definizione della funzione aggiungi_link.
2) Se vuoi metterlo come plugin, dovrai creare un nuovo file (es: aggiungi-link.php) ed inserirlo nella tua cartella dei plugin. Dentro a questo file incolli il filtro e la funzione.
Come intenstazione del file (prima di scriverci qualsiasi cosa), dovrai invece mettere un commento col nome del plugin, autore e descrizione. Vedi qua un esempio.
3) Se invece dell’id, preferisci il nome dell’utente, allora al posto della funzione get_the_author_id() dovrai usare get_the_author_login(). Quindi:
global $post;
$user = get_the_author_login();
if($user == 'utenteprova'){
$content .= 'Testo da inserire';
}
return $content;
}
Spero di aver risolto ogni tuo dubbio. Ciao e auguri anche a te!
Ciao, intanto grazie!
Ho creato la pagina .php del plugin; ora, la riga
add_filter(‘the_content’, ‘aggiungi_link’, 1);
non ho capito dove inserirla; la devo mettere sempre nello stesso file .php incollandola così come l’hai scritta tu subito sopra a tutto il testo che mi hai scritto nel punto 3?
Provando ad attivare il plugin mi dà un parse error on line 13 quella
global $post;
Se puoi darmi un esempio di come deve essere la pagina del plugin, includendo anche la riga add filter… te ne sarei grato, ciao!
Così è come dev’essere la pagina del plugin:
/*
Plugin Name: Aggiungi link
Description: Aggiunge un link alla fine dei post
Author: Daniele Ghidoli
Author URI: http://www.bigthink.it
*/
function aggiungi_link($content = '') {
global $post;
$user = get_the_author_login();
if($user == 'utenteprova'){
$content .= 'Testo da inserire';
}
return $content;
}
add_filter('the_content', 'aggiungi_link', 1);
?>
Intanto grazie ancora; ancora non ci siamo…: mi dà questo errore:
Parse error: syntax error, unexpected T_STRING in /web/htdocs/www.nomesito.it/home/wp-content/plugins/aggiungilink.php on line 10
Soluzioni?
Non so cosa dirti… Il codice che ti ho scritto nel commento precedente a me funziona perfettamente.
Sicuro di averlo copiato bene? Non hai dimenticato qualche punto e virgola?
Si, sicuro purtroppo; l’errore che dà credo sia nella riga
function aggiungi_link($content = ”) {
e lo dà provando ad attivare il plugin…
Scusa, volevo dire questa:
global $post;
mi confermi che va scritta così?
mmm…. non è che ti dà problema con gli apici? Prova a riscrivere tutti gli apici a mano, senza fare copia e incolla dal mio blog.
Ok, ora funziona, il problema lo dava wordpress perché metteva degli spazi prima di ogni riga facendo copia e incolla e levando questi spazi funziona a meraviglia; complimenti e grazie; auguri ancora, ciao!
Ottimo, sono contento tu abbia risolto!
Ciao, alla prossima!
Ottimo Daniele, ci voleva proprio questa guida. Ho cercato ovunque ma in italiano proprio non c’è un bel niente!
Grazie
Eh si, confermo Lorenzo, è l’unica guida in italiano per fare una cosa del genere; complimenti!! Auguri a tutti, ciao!
Grazie! E’ da un po’ che avevo in lista questo post, a saperlo che ne avevate così bisogno l’avrei scritto prima
Dite che forse è anche il caso che metto a dispozione il file sorgente da scaricare, bello e pronto?
Ciao, beh, io direi proprio di si, considerato il fatto che il copia e incolla di codice in wordpress dà problemi; potresti divulgarlo proprio come tuo plugin e sarebbe una cosa, credo di non sbagliare, unica almeno nel panorama dei plugin italiani (almeno io non ne ho trovati altri così, se li trovate fate un fischio:)); ciao!
Ed ecco infine il plugin, in modo che non bisogna scrivere nemmeno una riga di codice: Add2post. Spero la cosa sia gradita.
Ciao, complimenti per il tuo post.
Volevo farti una piccola domanda.
Per visualizzare il testo predefinito nei post a prescindere dal nome dell’utente come devo fare ?
Grazie mille !
Ciao, Matteo.
Se vuoi inserire un testo in tutti i post, senza imporre alcuna condizione, basta che togli tutti gli IF e lasci solo:
$content .= 'Testo da inserire';
return $content;
}
add_filter('the_content', 'aggiungi_link', 1);
Spero di aver correttamente interpretato la tua domanda.
Ciao!
Si, perfetto.
Proprio quello che cercavo
Grazie ancora, soprattutto per l’immediata risposta !
Buona giornata
Di nulla, alla prossima!
Ottimo!