BigThink

WordPress trick: inserire un testo predefinito alla fine dei post

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:

add_filter('the_content', 'aggiungi_link', 1);

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:

function aggiungi_link($content = '') {
    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:

function aggiungi_link($content = '') {
    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.

Articolo scritto da Ghido

Fondatore di BigThink.it, si occupa dello sviluppo e del coordinamento dei progetti tecnologici. Specializzato nel Marketing su Facebook e nello sviluppo di Applicazioni Social, fa consulenza e formazione ad aziende ed agenzie.

Leggi anche...

WordPress: capitalizzare i titoli nel feed RSS in automatico

WordPress: capitalizzare i titoli nel feed RSS in automatico

Un paio di giorni fa commentavo un articolo di Francesco Gavello, chiedendogli perchè scrivesse i titoli dei suoi articoli mettendo in maiuscolo l'iniziale di ogni parola. Francesco mi ha allora risposto: Semplice impatto e migliore estetica quando finiscono nei feed reader. Una volta mischiati ad altri flussi RSS, risaltano maggiormente e hanno un “ché” di ...
WordPress: Aggiungere un feed RSS personalizzato

WordPress: Aggiungere un feed RSS personalizzato

Ci sono tantissime ragioni per cui si potrebbe voler aggiungere un feed RSS secondario: dare la possibilità ai lettori di iscriversi sia al feed completo che a quello breve; impostare un feed rss personalizzato per gli aggregatori di blog; creare una newsletter con FeedBurner; mostrare il feed in un formato particolare... Nei prossimi giorni vedremo più nel dettaglio ...
WordPress: Dare agli spammer la possibilità di redimersi

WordPress: Dare agli spammer la possibilità di redimersi

Si conclude oggi la miniserie di Camu: dopo aver visto come va modificato l'.htaccess e come farlo in automatico, oggi impariamo a personalizzare la pagina di errore. Dai commenti sul mio blog alla prima puntata di questa miniserie è venuta fuori un'interessante discussione su cosa "vedono" gli spammer presenti nella lista nera quando tentano ...
WordPress: creare Loop con query personalizzate

WordPress: creare Loop con query personalizzate

Oggi vorrei trattare un argomento abbastanza tecnico, utile a chi sviluppa plugin per WordPress, Widget o temi, ma anche a chi è solito mettere mano al template del proprio blog: creare query personalizzate con WordPress. Quando ci capita di dover interagire con il Loop principale della pagina, possiamo tranquillamente usare la solita query_posts, che ...
WordPress: aggiungere un testo alla fine del feed RSS

WordPress: aggiungere un testo alla fine del feed RSS

Tempo fa ho spiegato come inserire un testo predefinito alla fine dei post, dal quale è venuto fuori anche un plugin: Add2post. Oggi vorrei fare una cosa analoga, ma con i feed RSS: vedremo quindi come inserire automaticamente un testo predefinito alla fine di ogni elemento del nostro feed, senza l'utilizzo di alcun plugin. Un ...

25 Commenti

  1. Ciao e complimenti per questo lavoro!

    Sto usando il tuo Plugin e funziona alla grande!!

    Solo una cosa… sarebbe possibile scegliere come condizione non l’autore o la categoria ma bensì un certo TAG ?

    Cioè fare in modo che il testo sia aggiunto a tutti i post che hanno quel determinato TAG!

    Immagino che si possa fare con le funzioni ma sicuramente si potrà fare anche modificando il plugin che sarebbe comodissimo :-)

    Nel caso potresti dirci che righe cambiare?
    GRAZIE MILLE…

    7 giugno 2011, 17:03
  2. Ciao, e se volessi inserire un testo all’inizio di ogni articolo anzichè alla fine? Quale codice dovrei cambiare?

    6 maggio 2011, 18:05
  3. Ciao Ghido,
    sto usando il tuo plugin Add2post e mi stavo chiedendo se fosse possibile personalizzarlo. MI spiego meglio.
    Vorrei che il testo che vado ad inserire in fondo al post sia racchiuso in un box, magari con un colore diverso.
    Ho pensato – con le minime conoscenze che ho – di inserire uno stile nello style del mio wordpress, ma non ottengo il risultato desiderato.
    Puoi darmi un consiglio?
    grazie

    23 aprile 2010, 16:41
  4. Max

    Ottimo!

    18 novembre 2009, 23:56
  5. Si, perfetto.

    Proprio quello che cercavo :)

    Grazie ancora, soprattutto per l’immediata risposta !

    Buona giornata

    11 gennaio 2009, 15:51
    • Ghido

      Di nulla, alla prossima! ;)

      11 gennaio 2009, 15:53
  6. 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 !

    11 gennaio 2009, 15:41
    • Ghido

      Ciao, Matteo.
      Se vuoi inserire un testo in tutti i post, senza imporre alcuna condizione, basta che togli tutti gli IF e lasci solo:

      function aggiungi_link($content = '') {
          $content .= 'Testo da inserire';
          return $content;
      }
      add_filter('the_content', 'aggiungi_link', 1);

      Spero di aver correttamente interpretato la tua domanda.
      Ciao!

      11 gennaio 2009, 15:48
  7. 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!

    23 dicembre 2008, 13:28
    • Ghido

      Ed ecco infine il plugin, in modo che non bisogna scrivere nemmeno una riga di codice: Add2post. Spero la cosa sia gradita.

      26 gennaio 2009, 16:03
  8. Ghido

    [Comment ID #1356 Will Be Quoted Here]
    [Comment ID #1359 Will Be Quoted Here]
    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?

    23 dicembre 2008, 12:41
  9. Eh si, confermo Lorenzo, è l’unica guida in italiano per fare una cosa del genere; complimenti!! Auguri a tutti, ciao!

    23 dicembre 2008, 12:06
  10. Lorenzo De Santis

    Ottimo Daniele, ci voleva proprio questa guida. Ho cercato ovunque ma in italiano proprio non c’è un bel niente!

    Grazie ;-)

    23 dicembre 2008, 02:05
  11. Ghido

    Ottimo, sono contento tu abbia risolto!
    Ciao, alla prossima!

    22 dicembre 2008, 23:57
  12. paolo

    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!

    22 dicembre 2008, 23:50
  13. Ghido

    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.

    22 dicembre 2008, 23:48
  14. paolo

    Scusa, volevo dire questa:
        global $post;
    mi confermi che va scritta così?

    22 dicembre 2008, 23:42
  15. paolo

    Si, sicuro purtroppo; l’errore che dà credo sia nella riga
    function aggiungi_link($content = ”) {
    e lo dà provando ad attivare il plugin…

    22 dicembre 2008, 23:41
  16. Ghido

    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?

    22 dicembre 2008, 23:34
  17. paolo

    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?

    22 dicembre 2008, 23:00
  18. Ghido

    Così è come dev’essere la pagina del plugin:

    <?php
    /*
    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);

    ?>
    22 dicembre 2008, 20:45
  19. paolo

    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!

    22 dicembre 2008, 20:24
  20. paolo

    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?

    22 dicembre 2008, 20:15
  21. Ghido

    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:

    function aggiungi_link($content = '') {
        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! ;-)

    22 dicembre 2008, 20:01
  22. paolo

    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!

    22 dicembre 2008, 19:43

5 Citazioni