Visita <a href="http://www.liquida.it/" title="Notizie e opinioni dai blog italiani su Liquida">Liquida</a> e <a href="I widget di Liquida per il tuo blog">Widget</a>

dic22
Categoria: Personalizzare WordPress | Autore: Ghido

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.


Leggi anche:

23 Commenti

  1. 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!

  2. 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! ;-)

  3. 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?

  4. 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!

  5. 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);

    ?>
  6. 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?

  7. 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?

  8. paolo

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

  9. paolo

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

  10. 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.

  11. 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!

  12. Ghido

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

  13. Lorenzo De Santis

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

    Grazie ;-)

  14. Eh si, confermo Lorenzo, è l’unica guida in italiano per fare una cosa del genere; complimenti!! Auguri a tutti, ciao!

  15. Ghido

    Lorenzo De Santis ha scritto:

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

    Grazie ;-)

    Leonardi Paolo ha scritto:

    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?

  16. 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!

    • Ghido

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

  17. 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 !

    • 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!

  18. Si, perfetto.

    Proprio quello che cercavo :)

    Grazie ancora, soprattutto per l’immediata risposta !

    Buona giornata

    • Ghido

      Di nulla, alla prossima! ;)

  19. Max

    Ottimo!

  20. 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

Lascia un commento

Inserisci le tue informazioni personali, o loggati con il tuo account Facebook.