Introduzione allo sviluppo di plugin per WordPress: costruisci la tua prima estensione funzionale da zero

Leggere in 3 minuti.
2026-03-11
2026-06-04
1,941
Guadagno delle commissioni quando fai acquisti tramite i link qui sotto, senza alcun costo aggiuntivo per te.

Perché scegliere di sviluppare plugin per WordPress?

WordPress, come il sistema di gestione dei contenuti più popolare al mondo, deve la sua notevole flessibilità e estensibilità alla sua architettura basata su plugin. Sviluppare i propri plugin significa non essere più limitati dalle funzionalità disponibili, ma essere in grado di soddisfare esattamente le esigenze specifiche del proprio sito web o dei propri clienti. Che si tratti di aggiungere un semplice frammento di codice (“shortcode”) o di creare un pannello di gestione complesso, i plugin permettono di separare la logica funzionale dal tema utilizzato, garantendo che le funzionalità non vengano influenzate dall’aggiornamento dello stesso tema.

Dal punto di vista dell’apprendimento, comprendere lo sviluppo di plugin rappresenta una tappa essenziale per approfondire il funzionamento di WordPress. Ti permette di entrare in contatto con due concetti fondamentali: gli Action Hooks e i Filter Hooks, che costituiscono le basi per la modularità e l’espandibilità di WordPress. Imparare a sviluppare plugin non solo migliora le tue competenze tecniche, ma ti apre anche nuove opportunità professionali e può persino portarti alla creazione di prodotti digitali vendibili.

Preparativi prima dello sviluppo

Prima di scrivere la prima riga di codice, è necessario disporre di un ambiente di sviluppo adeguato. Questo include solitamente un ambiente di server locale (come Local by Flywheel, XAMPP o MAMP), un editor di codice (come VS Code o PhpStorm), nonché un sito di test su cui è installato WordPress. Assicurarsi che la versione di PHP utilizzata nell’ambiente di test sia compatibile con quella utilizzata nell’ambiente di produzione online, per evitare problemi di compatibilità.

Si consiglia di leggere Padroneggiare le tecniche fondamentali di WordPress: una guida pratica completa dalla creazione all’ottimizzazione

Comprendere la struttura di base di un plugin

Un plugin WordPress di base può contenere soltanto un file PHP. Tuttavia, un plugin ben strutturato di solito include diversi directory e file per garantire una maggiore organizzazione. Una struttura tipica di un plugin può includere i seguenti elementi:
Il file del plug-in principale (ad esempio) my-first-plugin.phpQuesto è il punto di ingresso del plugin, che contiene le informazioni relative alla sua struttura (il “header” del plugin).
- includes/ Indice: Contiene i file relativi alle classi o funzioni che implementano le funzionalità principali del programma.
- admin/ Indice: Contiene il codice relativo all’interfaccia di gestione del backend.
- public/ Indice: Contiene il codice destinato all’interfaccia front-end del sito web.
- assets/ Indice: Contiene risorse statiche come JavaScript, CSS e immagini.
- languages/ Indice: Contiene i file di traduzione internazionalizzati (.po/.mo).

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

Informazioni essenziali sui file di configurazione dei plugin

Ogni plugin per WordPress deve contenere, all’inizio del proprio file PHP principale, le note di intestazione standard per i plugin; queste note sono essenziali affinché WordPress possa riconoscere correttamente il plugin stesso. Ecco un esempio molto semplice:

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

Tra questi,Plugin Name Questo campo è obbligatorio; tutti gli altri sono opzionali. Tuttavia, per garantire la completezza e la manutenibilità del plugin, si consiglia di compilare tutti i dati rilevanti.Text Domain Utilizzato per l’internazionalizzazione.Domain Path Indica la directory contenente i file delle lingue.

Crea il tuo primo plugin: una semplice funzione di saluto.

Procediamo con un esempio pratico. Creeremo un plugin che visualizza un messaggio di saluto personalizzabile in cima al contenuto degli articoli sul sito web.

Creare i file del plugin e la directory associata.

Prima di tutto, all’interno della directory di installazione di WordPress… wp-content/plugins/ All’interno della cartella, crea una nuova cartella e dale il nome di… my-greeting-pluginPoi crea un file PHP principale all’interno di quella cartella, chiamandolo… my-greeting-plugin.phpE copia le informazioni relative ai header dei plugin sopra menzionati all’interno di quel file.

Si consiglia di leggere Come scegliere e sviluppare plugin per WordPress di alta qualità: dall’approccio iniziale all’esperto

Utilizzare degli “hook” per aggiungere funzionalità.

WordPress funziona attraverso un sistema di “hook” (ganci). Per aggiungere informazioni prima del contenuto degli articoli, dobbiamo utilizzare questi meccanismi. the_content “Filter Hooks”: Nella tua principale file del plugin, aggiungi la seguente funzione e le relative chiamate ai hook.

/**
 * 在文章内容前添加问候语
 *
 * @param string $content 原始的文章内容。
 * @return string 修改后的文章内容。
 */
function mgp_add_greeting_to_content( $content ) {
    $greeting_text = get_option( 'mgp_greeting_text', '欢迎阅读!' ); // 从数据库获取设置,默认为“欢迎阅读!”
    $custom_greeting = '<div class="mgp-greeting"><p><strong>'`. esc_html($greeting_text).`'</strong></p></div>';

// 仅对主循环中的单篇文章页面生效
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $custom_greeting . $content;
    }
    return $content;
}
// 将函数挂载到 `the_content` 过滤器
add_filter( 'the_content', 'mgp_add_greeting_to_content' );

Questo codice definisce una funzione. mgp_add_greeting_to_contentQuesto sistema riceve il contenuto di un articolo e aggiunge inizialmente un contenitore DIV contenente un saluto. add_filter() Funzioni: installeremo funzioni personalizzate su WordPress. the_content Il filtro è attivo. La logica interna della funzione garantisce che i saluti vengano visualizzati soltanto nel ciclo principale della pagina di un singolo articolo nella parte frontale del sito, senza influenzare le pagine di archiviazione o gli strumenti aggiuntivi (widget).

Creare una semplice pagina di impostazioni di gestione.

Per permettere agli utenti di personalizzare il testo dei saluti, dobbiamo aggiungere una semplice pagina di configurazione. Questo richiede l’utilizzo dell’API del menu di amministrazione di WordPress. Continua ad aggiungere il seguente codice nel file principale del plugin:

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%
/**
 * 注册插件设置菜单和页面
 */
function mgp_register_admin_menu() {
    add_options_page(
        '问候语设置',           // 页面标题
        '问候语插件设置',       // 菜单标题
        'manage_options',      // 所需权限
        'my-greeting-plugin',  // 菜单slug
        'mgp_render_settings_page' // 用于输出页面内容的回调函数
    );
}
add_action( 'admin_menu', 'mgp_register_admin_menu' );

/**
 * 渲染设置页面的内容
 */
function mgp_render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Impostazioni del plugin per i saluti</h1>
        <form method="post" action="/it/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'mgp_settings_group' ); // 输出设置组和非ce字段
            do_settings_sections( 'my-greeting-plugin' ); // 输出设置区域
            submit_button(); // 输出提交按钮
            ?>
        <input type="hidden" name="trp-form-language" value="it"/></form>
    </div>
    <?php
}

/**
 * 初始化插件设置
 */
function mgp_initialize_settings() {
    // 注册一个设置
    register_setting(
        'mgp_settings_group', // 设置组名
        'mgp_greeting_text',  // 选项名,对应数据库中的键
        array( // 可选的验证回调函数
            'sanitize_callback' => 'sanitize_text_field',
            'default' =&gt; '欢迎阅读!'
        )
    );

// 添加一个设置区域
    add_settings_section(
        'mgp_main_section',           // 区域ID
        '主要设置',                   // 区域标题
        null,                         // 区域介绍的回调函数(此处不需要)
        'my-greeting-plugin'          // 页面slug
    );

// 向区域中添加一个字段
    add_settings_field(
        'mgp_greeting_field',         // 字段ID
        '问候语文本',                 // 字段标签
        'mgp_greeting_field_callback', // 用于输出字段HTML的回调函数
        'my-greeting-plugin',         // 页面slug
        'mgp_main_section'            // 区域ID
    );
}
add_action( 'admin_init', 'mgp_initialize_settings' );

/**
 * 渲染问候语文本输入字段
 */
function mgp_greeting_field_callback() {
    $greeting = get_option( 'mgp_greeting_text', '欢迎阅读!' );
    echo '<input type="text" name="mgp_greeting_text" value="' . esc_attr( $greeting ) . '" class="regular-text" />';
    echo '<p class="description">Questo testo verrà visualizzato in cima a ogni articolo sul vostro sito web.</p>';
}

Questo codice svolge le seguenti funzioni:
1. Utilizzare add_action( 'admin_menu', ... ) È stato aggiunto un sottomenuo all’interno del menu “Impostazioni”.
2. Utilizzare add_action( 'admin_init', ... ) Impostazioni iniziali, che includono l’opzione di registrazione di un database, un’area per la configurazione e un campo di input.
3. Sono state definite le funzioni per la creazione delle pagine di impostazione della visualizzazione, nonché dei form e dei campi relativi.
Ora, fai login al pannello di amministrazione di WordPress e, nel menu “Impostazioni”, troverai le impostazioni del plugin “Greeting Message”. Qui potrai modificare il testo del messaggio di saluto e vedrai immediatamente i cambiamenti negli articoli visualizzati sul front end.

Best Practices e Avanzamenti nello Sviluppo di Plugin

Dopo aver completato le funzionalità di base, seguire le migliori pratiche renderà il tuo plugin più professionale, sicuro e facile da mantenere.

La sicurezza è la priorità assoluta.

Non fidarti mai degli input forniti dagli utenti. Nei plugin, tutti i dati ottenuti dall’esterno (ad esempio…) $_GET$_POST$_COOKIE Qualsiasi dato proveniente da un database (o da un’altra fonte di informazioni) deve essere verificato, pulito o “evaso” (cioè modificato in modo da evitare problemi di interpretazione) prima di essere visualizzato o utilizzato.
Output di escape: utilizzare esc_html()esc_attr()esc_url()wp_kses_post() e altre funzioni.
Pulire l'input: usare sanitize_text_field()sanitize_email()intval() e altre funzioni.
Sicurezza del database: utilizzare $wpdb Per effettuare una query sui metodi di una classe, è possibile utilizzare… prepare() Utilizzare metodi per eseguire query parametrizzate al fine di prevenire gli attacchi di tipo SQL injection.
Controllo dei permessi: prima di accedere alla pagina di gestione o di eseguire operazioni sensibili, utilizzare current_user_can() Verifica i permessi dell’utente e utilizzali di conseguenza. check_admin_referer() Verifica del campo “nonce” per prevenire la falsificazione delle richieste tra siti (Cross-Site Request Forgery, CSRF).

Si consiglia di leggere Padroneggiare le tecniche fondamentali di WordPress per creare siti web professionali che combinino funzionalità ed estetica.

Implementare l’internazionalizzazione (i18n)

Per permettere al tuo plugin di essere utilizzato da utenti in tutto il mondo, è necessario supportare la traduzione in diverse lingue. Per questo, dovrai utilizzare le funzionalità di traduzione di WordPress per incapsulare tutte le stringhe destinate agli utenti. Modifica l’output delle stringhe presente nel codice originale:

// 在插件头信息中已定义 Text Domain: my-first-plugin
$greeting_text = get_option( 'mgp_greeting_text', __( '欢迎阅读!', 'my-first-plugin' ) );

// 在管理菜单函数中
add_options_page(
    __( '问候语设置', 'my-first-plugin' ),
    __( '问候语插件设置', 'my-first-plugin' ),
    'manage_options',
    'my-greeting-plugin',
    'mgp_render_settings_page'
);

Successivamente, puoi utilizzare strumenti come Poedit per estrarre le stringhe dal codice sorgente del plugin e generarle. .pot I file dei modelli, in base ai quali i traduttori possono creare versioni in diverse lingue. .po.mo File, e inserirli nel plugin. /languages Indice.

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.

Organizzazione del codice e ottimizzazione delle prestazioni

Con l’aumento delle funzionalità dei plugin, è saggio suddividere il codice in file diversi. L’utilizzo della programmazione orientata agli oggetti (OOP) e delle classi per organizzare il codice migliora la leggibilità e la riutilizzabilità. Per quanto riguarda i risorse (CSS, JS), è consigliabile… wp_enqueue_style()wp_enqueue_script() La funzione viene eseguita nel momento giusto, all’interno del hook appropriato (ad esempio…). wp_enqueue_scriptsadmin_enqueue_scriptsI componenti vengono caricati su richiesta e le versioni delle dipendenze vengono specificate esplicitamente. È consigliabile evitare di eseguire query costose al database direttamente all’interno dei plugin; invece, si può utilizzare l’API Transients per memorizzare in cache i dati non essenziali.

Riassumendo

Partendo dalla creazione di un semplice file PHP e dall’aggiunta delle informazioni relative ai header dei plugin standard, passando all’integrazione degli action hooks e dei filter hooks nel ciclo di vita di WordPress, fino alla realizzazione di interfacce di gestione e al rispetto delle migliori pratiche di sicurezza e internazionalizzazione, hai percorso il percorso fondamentale per sviluppare un plugin completo per WordPress. Anche se il “plugin di saluto” è semplice, dimostra in modo completo il flusso di lavoro essenziale nello sviluppo di plugin: pianificazione delle funzionalità, utilizzo degli hook, elaborazione dei dati e creazione delle interfacce utente. Ricorda che continuare a studiare il manuale ufficiale di WordPress, analizzare il codice di plugin open source di qualità e praticare costantemente rappresenta il modo migliore per migliorare le proprie competenze nello sviluppo di plugin. Il tuo prossimo plugin potrebbe essere in grado di risolvere un problema reale, più complesso e interessante.

FAQ - Domande frequenti

Quanti file sono necessari almeno per un plugin WordPress?

Un plugin WordPress completo richiede almeno un file PHP. È sufficiente che, all’inizio di questo file, siano presenti le informazioni corrette relative al plugin stesso (almeno le informazioni di intestazione del plugin). Plugin NameIn questo modo, WordPress sarà in grado di riconoscerlo e attivarlo nell’elenco degli plugin presenti nel backend. Il file in questione può contenere tutto il codice necessario per le funzionalità del plugin, nonché il codice relativo alle pagine di gestione. Naturalmente, per i plugin più complessi, si consiglia di suddividere il codice in più file e directory al fine di migliorarne la manutenibilità.

Come posso evitare che il plugin che ho sviluppato entri in conflitto con altri plugin?

Il segreto per evitare conflitti consiste nell’utilizzare prefissi unici per denominare tutte le tue funzioni, classi, variabili, nomi delle opzioni nonché gli elementi che gestiscono azioni o filtri. Ad esempio, non utilizzare… add_greeting() Un nome di funzione così generico… Dovremmo invece utilizzare qualcosa di più specifico e appropriato. mgp_add_greeting() Un nome del genere (in cui…) mgp Si tratta delle abbreviazioni dei vostri plugin. Per le opzioni memorizzate nel database, è anche necessario utilizzare un prefisso unico, ad esempio… mgp_greeting_textQuesto riduce al minimo la possibilità di conflitti tra i namespace.

Cosa si dovrebbe fare quando si attiva o disattiva un plugin?

Quando un plugin viene attivato, di solito è necessario eseguire alcune operazioni una sola volta, come verificare la versione di PHP o di WordPress, creare tabelle nel database, impostare le opzioni predefinite, ecc. Questo può essere fatto tramite… register_activation_hook() La funzione può essere implementata allo stesso modo.register_deactivation_hook() Viene utilizzato per definire le operazioni da eseguire quando un plugin viene disattivato, ad esempio per cancellare le attività pianificate. Tuttavia, si noti che gli hook di disattivazione non sono generalmente utilizzati per eliminare i dati; la pulizia dei dati viene solitamente affidata agli hook di disinstallazione o all’azione scelta manualmente dall’utente.

Come posso aggiungere una pagina di configurazione al mio plugin?

Per aggiungere una pagina di configurazione a un plugin, sono necessari principalmente due API di WordPress: l’API per i menu e l’API per le impostazioni. Per iniziare, utilizza… add_action( 'admin_menu', ... ) Montare una funzione e utilizzarla all’interno di essa. add_menu_page()add_submenu_page() Registra una pagina di menu di livello superiore o di livello inferiore. Successivamente, utilizzala… add_action( 'admin_init', ... ) Montare un’altra funzione e utilizzarla al suo interno. register_setting()add_settings_section()add_settings_field() Definiamo ora le opzioni di configurazione specifiche e i campi del form. Infine, scriviamo una funzione di callback per renderizzare il form HTML della pagina di configurazione.

Il mio plugin deve essere compatibile con quale versione di WordPress?

Dipende dal tuo pubblico di destinazione. Di solito, si consiglia di garantire la compatibilità con le ultime 3 o 4 versioni principali di WordPress. Puoi utilizzare questa informazione all’interno dei metadati del plugin. Requires at least: Indichiamo la versione minima di WordPress richiesta. Durante lo sviluppo, è consigliabile evitare l’uso di funzionalità molto recenti che sono supportate solo dalla versione più recente di WordPress, o l’utilizzo di tali funzionalità in contesti non compatibili. function_exists() Eseguire controlli condizionali per fornire soluzioni alternative compatibili con le versioni precedenti di WordPress è una pratica utile. Inoltre, testare regolarmente le applicazioni su versioni più vecchie di WordPress rappresenta un ottimo modo per garantire la corretta compatibilità.