Da zero: Guida completa e tutorial pratico per lo sviluppo di plugin per WordPress

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

Perché imparare lo sviluppo di plugin per WordPress?

WordPress, come il sistema di gestione dei contenuti più popolare al mondo, si distingue per la sua elevata estensibilità, che deriva principalmente dall’ecosistema di plugin disponibili. Imparare a sviluppare plugin per WordPress non solo ti permette di personalizzare in modo approfondito le funzionalità del sito web per soddisfare esigenze aziendali specifiche, ma ti consente anche di trasformare le tue idee in prodotti commercializzabili, entrando in un mercato enorme. Rispetto all’utilizzo di plugin forniti da terze parti, lo sviluppo autonomo offre un codice più semplice, una maggiore sicurezza e una migliore ottimizzazione delle prestazioni, poiché hai il controllo totale su ogni singola funzionalità del sito.

Inoltre, padroneggiare questa competenza aumenta notevolmente il valore di un sviluppatore. Sia che si tratti di fornire soluzioni personalizzate ai clienti che di creare propri strumenti e prodotti, comprendere l’architettura fondamentale di WordPress e le norme di sviluppo dei plugin rappresenta un vantaggio decisivo. Ti permette di passare da un semplice utente a un creatore, in grado di comprendere e sfruttare appieno le potenzialità di WordPress.hookUtilizzando sistemi, metodi di manipolazione dei dati e meccanismi di sicurezza, è possibile creare applicazioni solide e affidabili.

Configurazione dell’ambiente di sviluppo per plugin e struttura di base

Prima di iniziare a scrivere il codice, è essenziale disporre di un ambiente di sviluppo locale professionale. Consigliamo l’uso di strumenti come Local, DevKinsta o Docker per creare rapidamente un ambiente che includa PHP, MySQL e un server web. Assicurati che la versione di PHP utilizzata (consigliata 7.4 o successiva) sia compatibile con la versione di WordPress a cui ti stai rivolgendo, e abilita la funzionalità di reporting degli errori: ciò renderà più semplice il processo di debug.

Si consiglia di leggere Iniziare da zero: creare il tuo primo plug-in WordPress.

La struttura di base di un plugin per WordPress è costituita da un file principale. Questo file deve contenere delle annotazioni specifiche nella parte iniziale (header), in modo che WordPress possa riconoscerlo correttamente.

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

Crea il tuo primo file di plugin.

Il file principale di un plugin di solito prende il nome dello stesso plugin, ad esempio… my-first-plugin.phpDevi posizionare questo file in… /wp-content/plugins/ All’interno di una cartella indipendente all’interno del directory. Ecco la struttura di codice più basilare del file:

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

Dopo aver salvato il file, potrai trovare questo plugin nella pagina “Plugin” dell’interfaccia di amministrazione di WordPress e attivarlo. Anche se al momento non dispone di alcuna funzionalità, hai comunque creato con successo un plugin riconosciuto da WordPress.

Comprendere e utilizzare i meccanismi fondamentali di WordPress: gli “hook”

La filosofia fondamentale dello sviluppo di plugin per WordPress è rappresentata dai “Hook”, che consentono al proprio codice di essere integrato nel flusso di esecuzione principale di WordPress in momenti specifici, senza la necessità di modificare i file di codice sorgente di WordPress stesso. I Hook si dividono principalmente in due categorie: le “Actions” e i “Filters”.

Eseguire un compito utilizzando gli “action hooks”.

Gli “action hooks” (ganci di azione) ti permettono di eseguire funzioni personalizzate quando si verificano eventi specifici. Ad esempio, dopo la pubblicazione di un articolo, potresti voler inviare un’e-mail di notifica.publish_post È un tipico esempio di “action hook”. Lo utilizzi per eseguire determinate operazioni in base a specifiche condizioni. add_action() La funzione associa la tua funzione personalizzata a questo “hook” (punto di interazione).

Si consiglia di leggere Analisi approfondita: Architettura di base di WordPress e guida pratica allo sviluppo di nuovi temi

Modificare i dati utilizzando gli hook dei filtri

Gli “hook” dei filtri ti permettono di modificare i dati trasmessi da WordPress durante il processo di elaborazione. Ad esempio, potresti voler modificare il contenuto del titolo di un articolo.the_title È un “hook” per i filtri; lo utilizzi per implementare funzionalità di filtraggio nei tuoi programmi. add_filter() Esiste una funzione che permette di associare la tua funzione di elaborazione ai dati originali; questa funzione riceve i dati iniziali e deve restituire i dati modificati.

Ecco un esempio che utilizza sia azioni che filtri:

// 1. 定义一个在文章发布时执行的动作函数
function myplugin_on_post_publish( $post_id ) {
    // 获取文章对象
    $post = get_post( $post_id );
    // 记录日志或执行其他操作
    error_log( "文章《{$post->post_title}》已发布,ID: {$post_id}" );
}
// 将上述函数挂接到 ‘publish_post’ 动作钩子
add_action( 'publish_post', 'myplugin_on_post_publish' );

// 2. 定义一个修改文章标题末尾内容的过滤器函数
function myplugin_add_to_title( $title ) {
    // 仅在主循环的文章标题中生效
    if ( is_single() && in_the_loop() ) {
        return $title . ' - [推荐阅读]';
    }
    return $title;
}
// 将上述函数挂接到 ‘the_title’ 过滤器钩子
add_filter( 'the_title', 'myplugin_add_to_title' );

Pratica pratica: Creazione di un plugin personalizzato con una pagina di gestione

Un plugin pratico di solito richiede la presenza di una pagina di configurazione nel pannello di amministrazione di WordPress. Creeremo un plugin di esempio che aggiungerà una sottopagina al menu “Impostazioni” del pannello di amministrazione e permetterà di salvare e leggere alcune opzioni.

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%

Creare un menu e delle pagine per la gestione amministrativa in background.

Innanzitutto, dobbiamo utilizzare… add_action('admin_menu', ...) I “hook” vengono utilizzati per registrare i nostri propri elementi di menu durante l’inizializzazione del menu amministratore. add_options_page() Una funzione per aggiungere una sottopagina al menu “Impostazioni”.

Trattamento dei dati dei moduli e verifica della sicurezza

Nella pagina di gestione, di solito c’è un modulo che permette all’utente di effettuare delle impostazioni. Al momento della spedizione del modulo, è necessario eseguire controlli di sicurezza: verificare i diritti dell’utente, utilizzare i “nonce” per prevenire le richieste cross-site fraudolente (CSRF), nonché pulire e verificare i dati inseriti.

Ecco un esempio di codice per implementare questa funzionalità:

Si consiglia di leggere Tutorial per lo sviluppo di plugin per WordPress: Costruisci il tuo primo plugin da zero

// 钩入 admin_menu 来添加菜单
function myplugin_add_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',             // 菜单标题
        'manage_options',       // 所需权限(管理员)
        'myplugin-settings',    // 菜单 slug
        'myplugin_render_settings_page' // 渲染页面的回调函数
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// 渲染设置页面的回调函数
function myplugin_render_settings_page() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        wp_die( '权限不足。' );
    }
    ?&gt;
    <div class="wrap">
        <h1>I miei setting per il plugin</h1>
        <form method="post" action="/it/options.php/" data-trp-original-action="options.php">
            <?php
            // 输出必要的设置字段和 nonce 字段
            settings_fields( 'myplugin_settings_group' );
            do_settings_sections( 'myplugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="it"/></form>
    </div>
    &lt;?php
}

// 初始化插件设置,注册配置项
function myplugin_settings_init() {
    // 注册一个新的设置组‘myplugin_settings_group’和页面‘myplugin-settings’
    register_setting( &#039;myplugin_settings_group&#039;, &#039;myplugin_custom_message&#039; );

// 在页面‘myplugin-settings’上添加一个新的设置区域
    add_settings_section(
        &#039;myplugin_section&#039;,
        &#039;自定义消息设置&#039;,
        null,
        &#039;myplugin-settings&#039;
    );

// 向该区域添加一个字段
    add_settings_field(
        &#039;myplugin_field&#039;,
        &#039;欢迎消息&#039;,
        &#039;myplugin_field_render&#039;,
        &#039;myplugin-settings&#039;,
        &#039;myplugin_section&#039;
    );
}
add_action( &#039;admin_init&#039;, &#039;myplugin_settings_init&#039; );

// 渲染设置字段的函数
function myplugin_field_render() {
    $option = get_option( &#039;myplugin_custom_message&#039;, &#039;你好,访客!&#039; );
    echo &quot;<input type='text' name='myplugin_custom_message' value='" . esc_attr( $option ) . "' />";
}

// 在前端使用保存的选项
function myplugin_display_message() {
    $message = get_option( 'myplugin_custom_message', '你好,访客!' );
    echo '<p class="myplugin-message">'`. esc_html($message)`.'</p>';
}
// 你可以将此函数通过短码或钩子在前端调用,例如:
add_action( 'wp_footer', 'myplugin_display_message' );

Sicurezza dei plugin, internazionalizzazione e preparazione alla pubblicazione

Prima della pubblicazione, i plugin sviluppati devono essere sottoposti a un rigoroso processo di verifica per garantire la sicurezza, l’adattabilità a diversi contesti internazionali e la corretta archiviazione (compilazione).

La sicurezza è di fondamentale importanza. Tutti i dati ottenuti dall’input degli utenti (ad esempio $_GET, $_POST, $_REQUEST) devono essere verificati e puliti. WordPress offre una serie di funzioni utili a questo scopo. sanitize_text_field(), esc_html(), esc_url()wp_strip_all_tags() Utilizzato per l’escapamento dei dati prima dell’output. Non fidarti mai degli input forniti dagli utenti.

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.

Per permettere all’plugin di essere utilizzato da utenti in tutto il mondo, è necessario prepararlo per l’internazionalizzazione (i18n). Ciò significa che tutte le stringhe di testo visualizzate all’interno dell’plugin devono essere tradotte in diverse lingue. __()_e() Queste funzioni vengono incapsulate in moduli appropriati e il dominio di testo (Text Domain) viene impostato correttamente. In questo modo, i traduttori possono utilizzare i file con estensione .po/.mo per tradurre il tuo plugin.

Infine, è necessario redigere con attenzione il file `readme.txt`, seguendo le specifiche di WordPress.org. Assicurati che il codice del tuo plugin rispetti gli standard di codifica di WordPress, rimuovi tutto il codice di debug e compatta il file in un formato zip. Puoi scegliere di pubblicare il plugin nel catalogo ufficiale di WordPress o di distribuirlo sul tuo sito web personale.

Riassumendo

Lo sviluppo di plugin per WordPress è un processo che unisce creatività a una piattaforma potente. Abbiamo iniziato comprendendo l’importanza di questo approccio, per poi costruire gradualmente l’ambiente necessario e creare i file di base per i plugin. Attraverso lo studio approfondito e la pratica dei meccanismi fondamentali rappresentati dagli “action hooks” e dai “filter hooks”, abbiamo acquisito la conoscenza essenziale per interagire con WordPress. Successivamente, abbiamo creato un plugin completo, dotato di pagine di gestione amministrativa, che copriva l’intero processo: l’aggiunta di menu, la configurazione dell’account degli utenti, la sicurezza dei dati e la visualizzazione delle informazioni sul front end. Infine, abbiamo analizzato gli aspetti chiave che influenzano la qualità e la diffusione di un plugin: le pratiche di sicurezza, la preparazione per l’internazionalizzazione e il processo di packaging per il rilascio. Seguendo questi passaggi e le migliori pratiche, sarai in grado di creare plugin di livello professionale, funzionali, sicuri, affidabili e facili da distribuire, sfruttando al massimo il potenziale di WordPress.

FAQ - Domande frequenti

Quali conoscenze preliminari sono necessarie per sviluppare un plug-in WordPress?

È necessario possedere una conoscenza di base della lingua di programmazione PHP, poiché il nucleo di WordPress e i suoi plugin sono scritti in PHP. Inoltre, è utile avere una conoscenza di base di HTML, CSS e JavaScript per gestire la visualizzazione e l’interazione dell’interfaccia utente. È anche importante comprendere i concetti fondamentali dei database MySQL (come le query, le operazioni di inserimento, modifica, cancellazione e ricerca), poiché WordPress li utilizza per archiviare i dati.

Il file principale del plugin deve necessariamente avere un nome specifico?

No, il file principale del plugin può essere chiamato come si desidera; tuttavia, per motivi di chiarezza e standardizzazione, si consiglia di utilizzare un nome in inglese o in pinyin che rappresenti effettivamente il nome del plugin. L’unica condizione richiesta è che il file PHP contenga le corrette informazioni di commento relative alla struttura del plugin: è proprio grazie a queste informazioni che WordPress riesce a riconoscere e caricare i plugin.

Qual è la differenza fondamentale tra gli action hooks e i filter hooks?

Gli action hooks vengono utilizzati per “eseguire un determinato frammento di codice” quando si verifica un evento specifico; non richiedono che la funzione associata restituisca un valore, e il loro scopo è semplicemente eseguire un’azione o una operazione. Gli filter hooks, invece, servono per “modificare un dato”: richiedono che la funzione riceva un valore in ingresso e deve restituire un valore modificato. In altre parole, gli action hooks sono utilizzati per “fare qualcosa”, mentre gli filter hooks sono utilizzati per “cambiare qualcosa”.

Come posso assicurarmi che il mio plugin non entri in conflitto con altri plugin?

Aggiungere un prefisso unico a tutti i tuoi nomi di funzioni, classi, costanti e opzioni è la migliore pratica per evitare conflitti. Ad esempio, non utilizzare…get_data()Per un nome di funzione così generico, si dovrebbe utilizzare…myplugin_get_data()Inoltre, incapsulare il proprio codice in classi o namespace permette di isolare in modo più efficace le variabili e le funzioni tra di loro.