Richiamare i plugin nei temi di Wordpress in modo sicuro Scrivi un commento!

Richiamare i plugin nei temi di Wordpress in modo sicuro

Wordpress sicuro
Come rendere un plugin sicuro:mrgreen:

Molti plugin di Wordpress richiedono che tu inserisca manualmente una funzione nel codice del tema in uso (ad esempio per Wikiovote devi aggiungere <?php wikiovote(); ?> nel punto in cui vuoi far comparire il pulsante di voto). Questo approccio ha però un problema: nel momento in cui disattiverai il plugin (magari durante un aggiornamento) Wordpress non troverà più quella funzione e interromperà la visualizzazione del tuo blog con un bel errore PHP:

Fatal error: Call to undefined function wikiovote()

Impedire l’errore con function_exists

Il problema nasce dal fatto che le funzioni dei plugin vengono definite solo se il plugin è attivo; se, per una qualsiasi ragione, il plugin dovesse venire disattivato, si avrebbe una chiamata ad una funzione non definita.

Per fortuna il PHP ci mette a disposizione la funzione function_exists, che prende in input il nome di una funzione e restituisce in output true solo se la funzione esiste.

Pertanto, piuttosto che chiamare la funzione in modo tradizionale:

<?php wikiovote(); ?>

è preferibile chiamarla dentro un blocco IF:

<?php if (function_exists("wikiovote")) wikiovote(); ?>

In questo modo la funzione wikiovote verrà chiamata solo se definita (se, cioè, il plugin è attivo), altrimenti verrà visualizzato il blog senza il pulsante di voto… ma anche senza errori. ;)

A volte potresti voler circondare la chiamata alla funzione del plugin con del codice HTML (ad esempio, per aggiungere del testo descrittivo attorno al pulsante di voto); in questo caso ti conviene usare le parentesi graffe per l’IF, e inserire tutto il blocco di codice all’interno di queste:

<?php if (function_exists("wikiovote")) { ?>

<div style="float:right;">

<h2>Piaciuto l'articolo?</h2>

Votalo su Wikio:

<?php wikiovote(); ?>

</div>

<?php } /* FINE IF */ ?>

Per gli sviluppatori di temi: come rendere i template di Wordpress retrocompatibili

Si può sfruttare function_exists anche per rendere i temi di Wordpress retrocompatibili, quando possibile. La versione corrente di Wordpress potrebbe aver introdotto, infatti, delle funzioni non presenti nelle versioni precedenti: in quest’ultimo caso, si otterrebbe sempre un errore di undefined function.

Per esempio, Wordpress 2.5 introduce la funzione get_avatar per aggiungere i gravatar nei commenti. Come ho scritto in un commento ad un post di Cristiano Fino, per rendere il tema di Wordpress retrocompatibile basta chiamare la funzione in questo modo:

if (function_exists("get_avatar")) echo get_avatar( $comment, 32 );

Se ora il tuo tema verrà installato in una versione di Wordpress vecchia, i gravatar non verranno visualizzati, piuttosto che restituire errore.

(è da tempo che volevo pubblicare questo post - il commento su cristianofino.net dimostra la mia buona fede - ma i “big” mi hanno comunque anticipato con “Safest Way to Include Plugin Code in Themes”, a cui questo post si ispira). :P

Articoli simili:

Se questo articolo ti è stato utile, segnalalo sul tuo sito! Puoi inoltre seguire comodamente gli aggiornamenti di Techlog tramite il feed RSS; infine puoi lasciare un commento se ti serve aiuto (o anche solo per un saluto); anche qui non serve registrarsi (sono abilitati anche i commenti anonimi; l'E-Mail serve, eventualmente, per ricevere le notifiche delle nuove risposte). ;-)

7 Responses to “Richiamare i plugin nei temi di Wordpress in modo sicuro”

  1. Cristiano Says:

    Nessuno potrebbe mettere in dubbio la tua buona fede :-)
    Aggiungo che anche se è già stato scritto qualcosa di inerente:

    1) tu hai scritto un articolo differente e nella nostra madre lingua (non tutti conoscono l’inglese)
    2) ti assicuro che prima dell’articolo da te citato l’argomento è stato già sviscerato altrove (sempre all’estero), alla faccia dell’originalità :-D

    Concludo ribadendo che la tua tecnica descrittiva rende gli argomenti sempre in maniera estremamente comprensibile, per cui, continua così e non ti crucciare di eventuali ispirazioni a fonti esterne ;-)

  2. Andrea Romagnoli Says:

    @ Cristiano:
    Grazie! :oops:

    Cristiano scrive:

    ti assicuro che prima dell’articolo da te citato l’argomento è stato già sviscerato altrove (sempre all’estero), alla faccia dell’originalità

    Ho notato. ;) Ho letto di altri metodi che fanno uso degli hook di wordpress, ma questo, sinceramente, mi sembra più semplice e comprensibile. Ok, per ogni plugin si chiamano due funzioni e un if piuttosto che una sola… ma non sono sicuro che utilizzare gli hook sia più performante. ;)

  3. Cristiano Says:

    A mio avviso la soluzione migliore è quella proposta anche da te ;-)

  4. Andrea Romagnoli Says:

    @ Cristiano:
    Se mi prende il matto, faccio un test delle prestazioni delle diverse soluzioni :P

  5. amine Says:

    cool

  6. annarita Says:

    Ciao, Andrea…sempre impegnato con dritte e soluzioni, eh?

    Vai a leggere qui:

    http://scientificando.splinder.com/post/18242345/Il+Mio+Blog+Day+2008

    C’è qualcosa che ti riguarda…

    baciotti
    annarita:)

  7. Andrea Romagnoli Says:

    annarita scrive:

    Ciao, Andrea…sempre impegnato con dritte e soluzioni, eh?

    Già, anche se ultimamente sto battendo un po’ la fiacca… :oops:

    PS: la prossima riguarderà Blogger. ;)

    annarita scrive:

    Vai a leggere qui:

    Faccio subito! :mrgreen:

    annarita scrive:

    baciotti

    Anche a te! ;)

Leave a Reply


SMS Gratis