Crearsi un plugin per le funzioni personalizzate

Non aggiungete funzioni personali al file functions.php del tema, ma createvi un vostro plugin che le contenga. È davvero facile farlo.

Questo è un post tecnico di 6 anni fa. Le istruzioni potrebbero non essere più valide.

Ricorderete che nel mio post precedente consigliavo di aggiungere una funzione personalizzata in un plugin apposito, destinato a raccogliere tutte le funzioni che volete aggiungere al vostro blog. Dovrete creare da voi stessi questo plugin e non è per nulla difficile. In questo modo, quando vorrete aggiungere una nuova funzione globale del blog (per “globale” intendo che non sia legata specificamente al tema che state usando), vi basterà aggiungerla in coda alle altre e sarà subito disponibile. In aggiunta, se cambiate tema, le funzioni saranno sempre disponibili e, se dovete disattivarle, vi basterà disattivare il plugin.

Vediamo come si fa.

Il file principale

Create una cartella sul vostro PC e datele il nome che più vi aggrada, ad esempio “funzioni-mio-blog”, senza usare spazi. Al suo interno create un file di testo, utilizzando un editor di testo puro, e chiamatelo ad esempio funzioni-mio-blog.php.

All’interno di questo file incollate l’intestazione del plugin, ad esempio:

<?php
/*
	Plugin Name: Le funzioni del mio blog
	Description:  Contiene le funzioni personalizzate del mio blog.
	Plugin URI: http://www.example.com/wordpress/wordpress-plugins/funzioni-mio-blog/
	Author: Mio Nome
	Author URI: http://www.example.com/
	Version: 1.0
	License: GPLv3 or later
*/

Questa intestazione serve a WordPress per capire che si tratta di un plugin e che deve trattarlo in quanto tale. L’unica riga veramente necessaria è solo quella del “Plugin Name”, ma le altre sono altamente raccomandate.

A seguire potete inserire la vostra prima funzione. Ad esempio, questa:

function get_archive_count() {
    // Ci servono queste due variabili globali
    global $wp_query, $paged;

    // Preleviamo il numero di post trovati
    $arc_count = $wp_query->found_posts;

    // Se ci sono più pagine
    if ( $arc_count > get_option( 'posts_per_page' ) ) {
        // Se siamo sulla prima pagina impostiamo il valore a 1
        if( $paged == 0 ) $paged = 1; // La prima pagina di una serie ha valore 0;
        // Stampiamo la riga con il numero di pagine
        $output = sprintf( __( '%1$s posts &amp;mdash; page %2$s of %3$s', 'my-plugin' ), $arc_count, $paged, $wp_query->max_num_pages );
    // Altrimenti, se c'è una sola pagina
    } else {
        // Stampiamo la riga senza il numero di pagine
        $output = sprintf( _n( '%s post', '%s posts', $arc_count, 'my-plugin'), number_format_i18n( $arc_count ) );
    }

    // Restituiamo l'output
    return $output;
}

È la funzione di cui vi parlavo nel mio precedente post. Dopo la chiusura della funzione (cioè l’ultima parentesi graffa), andate a capo (anche più volte per distanziare visivamente le funzioni tra loro) e potete incollare tutte quelle che desiderate. Ricordate che ogni funzione è definita in questo modo:

function nome_funzione() {
	// contenuto della funzione
}

I commenti possono essere di due tipi:

  1. a riga singola, preceduti dal doppio slash (//);
  2. a righe multiple, aperti da slash-asterisco (/*) e chiusi da asterisco-slash (*/).

Ad esempio:

function nome_funzione() {
	// Recuperiamo la variabile globale $wp_query
	global $wp_query;

	/* Stampiamo una informazione
	   del post
	   che ci interessa
	*/
	echo '<p class="post-info">' . get_post_meta( $wp_query->post->ID, 'post_info', true ) . '</p>';
}

Commentare le varie righe di codice è molto utile non solo per chi legge il vostro codice, ma anche per voi stessi se, a distanza di tempo, lo riprendete e non ricordate esattamente a che serve quella riga o perché l’avete messa lì.

Una volta che avrete inserito tutte le funzioni che vi servono, caricate via FTP la directory del plugin /wp-content/plugins/ oppure comprimetela in formato .zip e caricatela dal pannello di amministrazione di WordPress e attivate il plugin.

Questo è in sostanza quello che serve di base per farvi questo plugin personalizzato. Visto che il plugin, per sua natura, non va condiviso con altri perché contiene funzioni che servono solo a voi, non è necessario seguire le altre indicazioni che il Codex chiede, come ad esempio la creazione del file readme.txt, un file fondamentale se si vuole pubblicare il plugin sul repository di WordPress. Il senso di questo articolo non è infatti la pubblicazione di questo particolare plugin, ma quello di poterselo creare da sé e di non perdersi le funzioni che ci piacerebbe tenere ad ogni cambio di tema.

Spezzare il plugin in più file

Se il plugin cresce e sta diventando pieno di funzioni, potrebbe essere utile organizzarlo in maniera più razionale, in modo da trovare subito le funzioni che stiamo cercando.

Il plugin che mi sono creato è organizzato così:

file principale
 |
 |--> inc/filtri.php
 |--> inc/funzioni.php
 |--> inc/widgets.php
 |--> inc/shortcodes-docs.php
 |--> e così via...

In altre parole, nella directory principale del plugin c’è solo il file principale mentre nella sotto directory inc/ ci sono diversi file, dove ognuno di essi contiene funzioni in base alla loro natura, come si intuisce dai nomi del file.

Il file principale è costituito da queste righe:

<?php
/*
	Plugin Name: Le funzioni del mio blog
	Description:  Contiene le funzioni personalizzate del mio blog.
	Plugin URI: http://www.example.com/wordpress/wordpress-plugins/funzioni-mio-blog/
	Author: Mio Nome
	Author URI: http://www.example.com/
	Version: 1.0
	License: GPLv3 or later
*/

include_once( 'inc/filtri.php'          );
include_once( 'inc/funzioni.php'        );
include_once( 'inc/widgets.php'         );
include_once( 'inc/shortcodes-docs.php' );
// e così via...

Per ogni file da caricare si inserisce una riga di include_once(). I file da caricare contengono soltanto le funzioni, senza altre specifiche particolari.

Autore: Aldo Latino

Aldo Latino usa con entusiasmo Linux nella distribuzione Ubuntu, è un appassionato di WordPress e si diletta a fare il blogger. Ha anche una lista dei desideri. Per altre informazioni visita la sua .

5 pensieri riguardo “Crearsi un plugin per le funzioni personalizzate”

  1. Ciao Aldo, ho letto questo tuo articolo e volevo chiederti ma se io con le funzioni personalizzate creo un file function all’interno del mio tema child, non è corretto?

    1. Ciao Tiziano,
      sì, è corretto finché le funzioni che aggiungi servono esclusivamente per quel tema e non anche per altri.

      Se invece si tratta di funzionalità che devi mantenere anche se cambi tema, allora le strade sono due:
      1) per ogni cambio di tema, dovrai prelevare tutte le funzioni e traslocarle nel functions.php del nuovo tema (soluzione scomoda);
      2) oppure crearsi un plugin che contenga tutte queste funzioni, così ad ogni cambio tema le funzionalità rimarranno.

I commenti sono chiusi