Guida completa allo sviluppo di plugin per WordPress: dalla creazione del tuo primo plugin funzionale fino al suo completamento.

Leggere in 3 minuti.
2026-03-18
2026-06-03
2,534
Guadagno delle commissioni quando fai acquisti tramite i link qui sotto, senza alcun costo aggiuntivo per te.

Preparazioni e configurazione dell’ambiente

Prima di iniziare a scrivere il codice, è necessario disporre di un ambiente di sviluppo adeguato. Questo include un’installazione locale di WordPress, un editor di codice e una certa conoscenza di base dei principi fondamentali dello sviluppo software.

Prima di tutto, assicurati di disporre di un ambiente server locale. Puoi utilizzare strumenti come XAMPP, MAMP, Local by Flywheel o Docker per configurare rapidamente un server. Dopo aver installato e configurato WordPress, avrai a disposizione un ambiente sicuro e isolato in cui eseguire i test, senza il rischio di influenzare il sito web online.

In secondo luogo, hai bisogno di un editor di codice affidabile e facile da utilizzare. Visual Studio Code, PhpStorm o Sublime Text sono ottime scelte: forniscono un ottimo supporto per PHP, HTML, JavaScript e CSS, e includono funzionalità come l’illuminazione del codice, la completazione automatica e lo sviluppo di applicazioni.

Si consiglia di leggere Dallo zero all’uno: Guida all’approccio base allo sviluppo di plugin per WordPress e alle migliori pratiche

Infine, è di fondamentale importanza comprendere la struttura di base di un plugin per WordPress. Un plugin è essenzialmente uno o più file PHP, situati nella directory di installazione di WordPress. /wp-content/plugins/ All’interno della cartella, ogni plugin deve disporre di un file principale che contenga informazioni specifiche relative al plugin stesso; queste informazioni vengono utilizzate per comunicare al sistema WordPress l’identità del plugin.

UltaHost – Hosting per siti WordPress
Garanzia di rimborso entro 30 giorni, larghezza di banda illimitata e accesso ai database, protezione gratuita contro gli attacchi DDoS; sconto del 50% per l’acquisto di un piano valido per 3 anni (da 3 a 4 TB di spazio di archiviazione).

Creazione e dichiarazione del file principale del plugin

Il primo passo per creare un plugin è creare il file principale e aggiungere le giuste annotazioni di intestazione. Questo file di solito prende il nome dalla funzionalità del plugin stesso, ad esempio… my-first-plugin.phpPer favore, esegui l’operazione nella tua ambiente locale. /wp-content/plugins/ Crea una nuova cartella all’interno del directory e dale il nome di… my-first-pluginPoi crea il file principale all’interno di quella cartella.

Il “header del plugin” è un insieme di informazioni metadati relative al plugin stesso; esso fornisce a WordPress il nome del plugin, la descrizione, la versione, l’autore, e altre informazioni essenziali. Ecco un esempio di header di plugin molto semplice:

<?php
/**
 * Plugin Name:       我的第一个功能插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个学习 WordPress 插件开发的示例插件,用于展示基础功能。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Dopo aver salvato il file, accedi al pannello di amministrazione di WordPress e vai alla pagina “Plugin”. Dovresti vedere un nuovo plugin chiamato “Il mio primo plugin funzionale” nell’elenco dei plugin disponibili. A questo punto puoi attivarlo, anche se al momento non dispone di alcuna funzionalità concreta.

Architettura principale: Ganci per azioni e filtri

Il cuore della potente capacità di estensione di WordPress risiede nel suo sistema di “hook” (ganci), che consente agli sviluppatori di inserire il proprio codice in momenti specifici o prima/dopo l’utilizzo dei dati. I hook si dividono in due tipi: “Actions” (Azioni) e “Filters” (Filtri).

Si consiglia di leggere Guida all’approccio di base allo sviluppo di temi per WordPress: costruisci il tuo template per sito web personalizzato da zero

Gli “action hooks” permettono di eseguire funzioni personalizzate al verificarsi di eventi specifici in WordPress. Ad esempio, quando un articolo viene pubblicato…publish_postDurante il caricamento del menu nell’interfaccia di amministrazione…admin_menu) oppure quando i script vengono caricati nella parte iniziale della pagina web (header).wp_enqueue_scriptsUtilizzare. add_action() Una funzione per montare la tua funzione agli eventi/azioni desiderati.

Utilizzare gli “action hooks” per aggiungere un menu di back-end.

Supponiamo che vogliamo aggiungere una pagina di configurazione per il plugin al pannello di amministrazione di WordPress. Utilizzeremo… admin_menu Questo “action hook”: aggiungi il codice nel tuo file principale, dopo le informazioni relative alla testa del plugin.

\n// Aggiungere un menu nell'area di amministrazione
function mfp_add_admin_menu() {
    add_menu_page(
        'Impostazioni del mio plugin',   // Titolo della pagina
        'Il mio plugin',   // Titolo del menu
        'manage_options',   // Permessi richiesti
        'my-first-plugin',   // Slug del menu
        'mfp_settings_page',   // Funzione di callback per visualizzare il contenuto della pagina
        'dashicons-admin-generic',   // Icona (opzionale)
        80   // Posizione del menu (opzionale)
    );
}
add_action( 'admin_menu', 'mfp_add_admin_menu' );

// Funzione di callback per la pagina delle impostazioni
function mfp_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
        <p>Benvenuti sulla pagina di configurazione del mio primo plugin!</p>
    </div>
    &lt;?php
}

Gli “hook” dei filtri ti permettono di modificare i dati. Ricevono un valore; dopo essere stati elaborati dalla tua funzione, devono restituire un valore modificato. Ad esempio, per modificare il titolo di un articolo…the_titleModificare il contenuto di un articolo…the_content) oppure modificare la lunghezza degli estratti.excerpt_lengthUtilizzare. add_filter() Una funzione per montare la tua funzione sul “filter hook”.

hosting.com Hosting condiviso
Prestazioni elevate con CPU AMD EPYC, storage SSD NVMe e LiteSpeed, supporto interno di esperti 24 ore su 24, 7 giorni su 7, misure di sicurezza avanzate, tra cui SSL, brute force, malware e protezione DDoS, risparmi fino a 73%

Modificare il contenuto di un articolo utilizzando filtri.

Creiamo una funzionalità semplice: aggiungere automaticamente una dichiarazione di copyright alla fine del contenuto di ogni articolo.

// Aggiungere testo personalizzato dopo il contenuto dell'articolo
function mfp_add_copyright_to_content( $content ) {
    // Funziona solo per gli articoli del ciclo principale della pagina frontale del sito web
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = ' '<p><em>Dichiarazione sui diritti d'autore: il contenuto di questo articolo è di proprietà del nostro sito; per ripubblicarlo, è necessario indicare la fonte.</em></p>'function mfp_add_copyright_to_content( $content ) {  
    if ( is_single() ) {  
        $custom_text = get_the_custom_text();  
        if ( ! empty( $custom_text ) ) {  
            $content .= '<p class='mfp-copyright'>' . $custom_text . '</p>';  
        }  
    }  
    return $content;  
}
add_filter( 'the_content', 'mfp_add_copyright_to_content' );

Implementazione di funzionalità specifiche: codici abbreviati e codici corti

I “Shortcode” (codici brevi) rappresentano una funzionalità molto potente offerta da WordPress, che consente agli utenti di inserire, all’interno di articoli o pagine, un semplice tag per ottenere effetti visivi o modifiche strutturali specifiche. [my_shortcode]Questo permette di generare contenuti dinamici complessi o di eseguire funzioni specifiche, offrendo ai creatori di contenuti una grande flessibilità.

Creare e registrare un semplice codice abbreviato.

Per creare un codice abbreviato, sono necessari due passaggi: innanzitutto, è necessario definire la funzione che gestirà il codice abbreviato; in seguito, si utilizza questa funzione per applicare il codice alle informazioni da visualizzare. add_shortcode() La funzione permette di registrare tale funzionalità all’interno di WordPress. Creiamo ora un codice breve (un “shortcode”) che mostri la data attuale e un saluto.

Si consiglia di leggere Dall’approccio iniziale all’abilità avanzata: Guida completa e tutorial pratico per lo sviluppo di plugin per WordPress

\n// Definizione della funzione di gestione dello shortcode
function mfp_show_greeting_shortcode( $atts ) {
    // Definizione dei parametri predefiniti utilizzando shortcode_atts e combinazione dei parametri forniti dall'utente
    $atts = shortcode_atts(
        array(
            'name' =&gt; 'Visitatore',
        ),
        $atts,
        'greeting'
    );

// Ottenimento dell'ora corrente
    $current_time = current_time( 'mysql' );
    $hour = date( 'H', strtotime( $current_time ) );

// Generazione del saluto in base all'ora
    if ( $hour &lt; it) {
        $greeting = &#039;Buongiorno!&#039;;
    } else if ( $hour \n&lt; 12 ) {
        $greeting = &#039;Buongiorno&#039;;
    } else if ( $hour &lt; &lt; 18 ) {
        $greeting = &#039;Buon pomeriggio&#039;;
    } else {
        $greeting = &#039;Buona sera&#039;;
    }

// Costruire l&#039;output
    $output = &#039;  &lt; 18 ) {
        $greeting = &#039;Good afternoon&#039;;
    } else {
        $greeting = &#039;Good evening&#039;;
    }

// Build the output
    $output = &#039; &lt;&#039;<div class="mfp-greeting">'$output .= sprintf( '<p>%s, %s!</p>'<p class='output'>%s</p>', esc_html( $atts['name'] ), esc_html( $greeting ) );
```'<p>L’ora attuale è: %s</p>'. esc_html( $current_time ) );
    $output .= '</div>'return $output;
}
// Registra lo shortcode, il primo parametro è il nome del tag utilizzato dall'utente
add_shortcode( 'greeting', 'mfp_show_greeting_shortcode' );

Ora, gli utenti possono utilizzarlo nell’editor di articoli. [greeting name="张三"]Sulla pagina verrà visualizzato il messaggio: “Ciao Zhang San, buon pomeriggio! L’ora attuale è: 2026-…”. Se non vengono forniti parametri, verrà utilizzato automaticamente il valore predefinito “Visitatore”.

Pratica avanzata: Creazione di tabelle di database e pagine di configurazione

I plugin più complessi potrebbero richiedere la memorizzazione dei propri dati. WordPress offre due principali metodi per farlo: utilizzare l’API delle opzioni di WordPress per memorizzare dati semplici sotto forma di coppie chiave-valore, oppure creare tabelle personalizzate nel database per archiviare dati strutturati.

Hosting condiviso InterServer
Hosting condiviso $2,50 USD al mese, primo mese $0,1 USD codice promozionale tryinterserver, 461 script di applicazioni cloud, installazione con un clic.

Utilizzare l’API delle opzioni per salvare le impostazioni.

L’API delle opzioni è particolarmente adatta per memorizzare le informazioni di configurazione dei plugin. Perfezioneremo la pagina di impostazioni del backend creata in precedenza in modo che possa salvare e leggere impostazioni semplici.

Prima di tutto, dobbiamo creare un modulo. mfp_settings_page() Nella funzione, aggiungi un semplice modulo di form per gestire le impostazioni:

function mfp_settings_page() {
    // Verificare se l'utente ha inviato il modulo
    if (isset( $_POST['mfp_submit_settings'] )) {
        // Controllo di sicurezza: verificare il nonce
        if (!isset( $_POST['mfp_settings_nonce'] ) || !wp_verify_nonce( $_POST['mfp_settings_nonce'], 'mfp_save_settings' )) {
            wp_die( 'Controllo di sicurezza fallito!' );
        }
        // Controllo dei permessi
        if (!current_user_can( 'manage_options' )) {
            wp_die( 'Permessi insufficienti!' );
        }
        // Pulire e salvare le opzioni
        $custom_message = sanitize_textarea_field( $_POST['custom_message'] );
        update_option( 'mfp_custom_message', $custom_message );
        echo '<div class="notice notice-success is-dismissible"><p>Le impostazioni sono state salvate!</p></div>';
    }

// 从数据库读取现有值
    $saved_message = get_option( 'mfp_custom_message', '这是默认的欢迎信息。' );
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
        <form method="post" action="" data-trp-original-action="">
            <?php wp_nonce_field( 'mfp_save_settings', 'mfp_settings_nonce' ); ?>
            <table class="form-table">
                <tr>
                    <th scope="row"><label for="custom_message">Messaggio personalizzato:</label></th>
                    <td>
                        <textarea name="custom_message" id="custom_message" rows="5" cols="50" class="large-text"><?php echo esc_textarea( $saved_message ); ?></textarea>
                        <p class="description">Questo testo verrà visualizzato quando verrà utilizzato il codice abbreviato [show_message].</p>
                    </td>
                </tr>
            </table>
            <?php submit_button( '保存更改', 'primary', 'mfp_submit_settings' ); ?>
        <input type="hidden" name="trp-form-language" value="it"/></form>
    </div>
    &lt;?php
}

Poi creiamo un nuovo codice abbreviato per visualizzare il messaggio salvato:

La funzione mfp_show_message_shortcode() esegue quanto segue:
    $message = get_option( 'mfp_custom_message', 'Questo è il messaggio di benvenuto predefinito.' );
    return '<div class="mfp-custom-message">'. wp_kses_post( wpautop( $message ) ) . '</div>'php
add_shortcode('show_message', 'mfp_show_message_shortcode');

Ora, l’amministratore può personalizzare i messaggi sulla pagina delle impostazioni del plugin, mentre l’autore deve semplicemente utilizzarli all’interno degli articoli. [show_message] Basta utilizzare un codice abbreviato per visualizzare il messaggio.

Quando il plugin viene attivato, viene creato un tabello personalizzato.

Per i plugin che necessitano di memorizzare dati relazionali complessi, come ordini o log, potrebbe essere necessario creare tabelle di database personalizzate. Questo processo avviene solitamente al momento dell’attivazione del plugin. WordPress offre le strutture di base per farlo. register_activation_hook Per definire la funzione che viene eseguita durante l’attivazione…

Attenzione: Il codice seguente è solo un esempio; nello sviluppo reale è necessario un trattamento degli errori più rigoroso e uno strato di astrazione del database più efficace. $wpdbL’uso di (%s, %1$s, {{var}}, :name).

// 插件激活时运行的函数
function mfp_create_custom_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'mfp_plugin_logs'; // 确保表名唯一
    $charset_collate = $wpdb->get_charset_collate();

$sql = "CREATE TABLE IF NOT EXISTS $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        log_time datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
        user_id bigint(20) DEFAULT 0,
        action varchar(255) NOT NULL,
        details text,
        PRIMARY KEY  (id)
    ) $charset_collate;";

// 引入 WordPress 升级 API,用于执行 dbDelta 函数
    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
}
// 注册激活钩子
register_activation_hook( __FILE__, 'mfp_create_custom_table' );

Riassumendo

Seguendo questa guida, hai sperimentato i passaggi fondamentali dello sviluppo di plugin per WordPress. Dall’installazione dell’ambiente di sviluppo e alla scrittura del codice iniziale del plugin, hai imparato a utilizzare gli “action hooks” e i “filter hooks” per estendere le funzionalità di WordPress, a fornire ai utenti modi flessibili per inserire contenuti tramite codici abbreviati (shortcodes), nonché a utilizzare l’API per la gestione delle impostazioni e i metodi di base per creare tabelle personalizzate nel database. Questi sono i pilastri essenziali per creare plugin efficaci e funzionali. Ricorda che una buona struttura del codice, la sicurezza (ad esempio, il controllo dei valori “nonce” e i controlli sugli accessi) e la preparazione per l’internazionalizzazione sono elementi indispensabili nello sviluppo di plugin professionali. Il prossimo passo? Puoi esplorare l’API REST di WordPress, i tipi di articoli personalizzati, i metadati (Meta Boxes), nonché le norme per l’introduzione di script e stili grafici front-end, al fine di creare plugin ancora più complessi e potenti.

FAQ - Domande frequenti

Un plugin può avere solo un file principale?

Non è affatto così. Un plugin può contenere più file PHP, ma deve esserci un file principale che includa le informazioni relative alla struttura del plugin stesso; questo file rappresenta l’ingresso per WordPress per riconoscere il plugin. I plugin più complessi solitamente organizzano il codice relativo alle diverse funzionalità in più file, che vengono poi importati tramite il file principale, al fine di migliorare la gestione del codice e la modularità del plugin stesso.

Come gestire in modo sicuro i dati inviati dagli utenti tramite i moduli front-end?

Quando si elaborano i dati inviati dagli utenti, è necessario effettuare una rigorosa convalida, pulizia ed evasione. Per l'input, utilizzare sanitize_text_field()sanitize_email()sanitize_textarea_field() Utilizzare funzioni come quelle per effettuare la pulizia dei dati. Per i dati che vengono visualizzati su una pagina HTML, si utilizza… esc_html()esc_attr()wp_kses_post() Esegui l’operazione di “escape” (la codifica dei caratteri per evitare problemi di interpretazione). Inoltre, assicurati di utilizzare il meccanismo “nonce” fornito da WordPress per prevenire le richieste cross-site fraudolente. current_user_can() Verifica i permessi dell’utente.

Come posso evitare che i nomi delle funzioni del mio plugin siano in conflitto con quelli di altri plugin?

La migliore pratica consiste nell’utilizzare i namespace (dal PHP 5.3 in poi) oppure nel posizionare tutte le funzioni, le classi e le costanti sotto un prefisso unico. Ad esempio, in questa guida tutte le funzioni iniziano con “mfp_” (l’acronimo di “My First Plugin”). Se si utilizza la programmazione orientata agli oggetti, incapsulare il codice all’interno di classi rappresenta un altro metodo efficace per evitare conflitti di nomi.

Dopo il completamento dello sviluppo, come si può distribuire il plugin o inserirlo nel catalogo ufficiale?

Per inviare un plugin al catalogo ufficiale di WordPress.org, è necessario creare un pacchetto di plugin che rispetti le specifiche richieste dal sito. Questo include solitamente una struttura dei file standardizzata, che comprende file di configurazione, file di codice sorgente, documentazione, immagini e altri file necessari per il corretto funzionamento del plugin. README.txtViene fornito un supporto completo per la traduzione, nonché dichiarazioni relative alla compatibilità del codice; inoltre, il codice stesso segue gli standard di codifica di WordPress. È necessario richiedere un account per sviluppatori su WordPress.org e, successivamente, utilizzare lo strumento SVN per inviare il codice al repository designato.