Sviluppo di plugin per WordPress: creare moduli di funzionalità personalizzati da zero.

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

Comprendere la struttura di base di un plugin per WordPress

Prima di addentrarsi nel codice, è fondamentale comprendere gli elementi di base di un plugin per WordPress. Un plugin è essenzialmente uno o più componenti che vengono inseriti all’interno del sistema di WordPress al fine di aggiungere nuove funzionalità o modificare quelle esistenti.wp-content/plugins/I file PHP presenti nel directory contengono, al loro interno, un file principale che racchiude le informazioni di metadati dell’estensione. Queste informazioni vengono comunicate a WordPress tramite un blocco di commenti in un formato speciale.

Il file di ingresso principale del plugin, ad esempio, quello che abbiamo chiamato…my-first-plugin.phpDeve contenere una specifica nota di intestazione del file. Questo blocco di note definisce il nome del plugin, la descrizione, la versione, l’autore e altre informazioni; rappresenta l’unico elemento su cui WordPress si basa per riconoscere e caricare il plugin. Un plugin di base può essere costituito da questo unico file e, sfruttando le API fornite da WordPress (come gli Action Hooks e i Filter Hooks), è in grado di modificare o estendere le funzionalità del sito web.

Le funzionalità di un plugin possono essere molto semplici, ad esempio l’aggiunta di una riga di testo in fondo alla pagina; oppure estremamente complesse, come la creazione di un intero sistema di e-commerce. Indipendentemente dalla complessità, lo sviluppo di un plugin segue lo stesso modello di base: innanzitutto, si crea la struttura dei file corretta nel posto giusto; successivamente, si scrive il codice e lo si integra nel ciclo di vita di WordPress; infine, si effettuano le configurazioni necessarie tramite l’interfaccia di amministrazione di WordPress.

Si consiglia di leggere Guida all’approccio di base allo sviluppo di plugin per WordPress: crea il tuo primo plugin da zero

Creare il tuo primo plug-in

Eseguiamo la creazione di un plugin il più semplice possibile utilizzando il classico esempio “Hello World”. La funzione di questo plugin è quella di visualizzare un saluto in cima al contenuto degli articoli su ogni pagina del sito web.

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

Prima di tutto, è necessario che tu lo installi localmente o sul server.wp-content/plugins/Crea una nuova cartella all’interno del directory e dale il nome di…my-hello-pluginPoi, all’interno di quella cartella, creiamo un file PHP principale, al quale assegniamo il nome…my-hello-plugin.php

Scrivere il file principale del plugin

Apriremy-hello-plugin.phpCarica il file e inserisci il seguente codice. Questo codice segue lo standard di formattazione per i plugin di WordPress e contiene l’intestazione delle informazioni sul plugin nonché il codice necessario per implementare le funzionalità desiderate.

<?php
/**
 * Plugin Name:       我的问候插件
 * Plugin URI:        https://yourwebsite.com/my-hello-plugin
 * Description:       这是一个简单的插件,用于在文章内容前输出“您好,读者!”。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-hello-plugin
 */

// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * 在主文章内容前添加问候语。
 *
 * @param string $content 原始的文章内容。
 * @return string 添加了问候语后的新内容。
 */
function my_hello_add_greeting( $content ) {
    $greeting = &#039;<p style="background-color:#f0f8ff; padding:10px; border-left:4px solid #0073aa;"><strong>Ciao, lettore! Benvenuto nella lettura di questo articolo.</strong></p>';
    // 只在主循环且是文章页面时添加
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $greeting . $content;
    }
    return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器
add_filter( 'the_content', 'my_hello_add_greeting' );

Attiva e testa il plugin.

Carica la cartella che contiene quel file sul server.wp-content/plugins/Il file del plugin deve essere posizionato nella directory appropriata del sito web, oppure, se stai sviluppando localmente, puoi inserirlo direttamente nella cartella corrispondente. Successivamente, fai login nell’interfaccia di amministrazione di WordPress e vai al menu “Plugin”. Dovresti riuscire a vedere il plugin “My Greeting Plugin” nell’elenco dei plugin disponibili. Clicca sul pulsante “Attiva”.

Dopo l’attivazione, visitando qualsiasi articolo o pagina del sito web, noterai l’apparizione di un messaggio di benvenuto con uno sfondo di colore blu chiaro e un bordo sul lato sinistro, prima dell’inizio del testo principale dell’articolo. Questo processo illustra chiaramente i passaggi fondamentali nello sviluppo di plugin per WordPress: la creazione dei file, l’aggiunta di funzionalità tramite degli “hook” (meccanismi di interazione predefiniti) e l’attivazione del plugin in background. Hai appena compiuto con successo il primo passo nello sviluppo di plugin per WordPress.

Si consiglia di leggere Sviluppo di plugin per WordPress: creare estensioni potenti per i siti web da zero.

Utilizzare ganci (hooks) e filtri per espandere le funzionalità.

La flessibilità e l’espandibilità di WordPress sono in gran parte dovute al suo sistema dei “Hook”. I Hook si dividono in due categorie: gli Action Hook e i Filter Hook. Comprendere e utilizzarli con abilità è fondamentale per lo sviluppo di plugin avanzati.

Gli “action hooks” permettono di inserire e eseguire il proprio codice in momenti specifici durante il funzionamento di WordPress (ad esempio, al momento della pubblicazione di un articolo o del caricamento di una pagina).save_postL’azione viene attivata quando l’articolo o la pagina viene salvata nel database. È possibile farlo tramite…add_action()La funzione “monta” la tua funzione personalizzata su questo hook.

Gli “hook” dei filtri ti permettono di modificare i dati generati da WordPress durante il processo di elaborazione. Registi una funzione all’interno di un filtro; quando WordPress esegue tale filtro, i dati vengono passati a tutte le funzioni registrate e si riceve il valore restituito dopo l’elaborazione. Questo è esattamente ciò che è stato utilizzato nell’esempio precedente.the_contentSi tratta di un tipico “hook” per i filtri: consente di modificare il contenuto dell’articolo che sta per essere visualizzato.

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%

Crea un semplice opzione di gestione.

Un plugin davvero utile di solito richiede alcune opzioni configurabili dall’utente; ciò implica l’interazione con l’interfaccia di back-end di WordPress. Dimostreremo come aggiungere una pagina di impostazioni personalizzate attraverso un esempio semplice.

Innanzitutto, utilizziamo…add_action(‘admin_menu’, …)Registra una funzione che creerà un nuovo elemento di menu nell’interfaccia di amministrazione.

/**
 * 在WordPress后台添加一个自定义菜单页面。
 */
function my_hello_add_admin_menu() {
    add_menu_page(
        ‘问候插件设置’, // 页面标题
        ‘问候插件’,     // 菜单标题
        ‘manage_options’, // 所需权限
        ‘my-hello-plugin’, // 菜单slug
        ‘my_hello_admin_page_html’, // 用于显示页面内容的回调函数
        ‘dashicons-format-chat’, // 图标(可选)
        80 // 菜单位置(可选)
    );
}
add_action( ‘admin_menu‘, ’my_hello_add_admin_menu’ );

/**
 * 自定义设置页面的HTML输出。
 */
function my_hello_admin_page_html() {
    // 检查用户权限
    if ( ! current_user_can( ‘manage_options’ ) ) {
        return;
    }
    ?&gt;
    <div class="“wrap”">
        <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
        <form action="/it/“options.php”/" method="“post”" data-trp-original-action="“options.php”">
            <?php
            // 输出设置字段、安全性和保存更改按钮
            settings_fields( ‘my_hello_options’ );
            do_settings_sections( ‘my-hello-plugin’ );
            submit_button( ‘保存问候语设置’ );
            ?>
        <input type="hidden" name="trp-form-language" value="it"/></form>
    </div>
    &lt;?php
}

Campi di configurazione per l’iscrizione e l’output

Non basta avere semplicemente una pagina: dobbiamo creare opzioni che possano essere salvate. Per farlo, è necessario utilizzare…add_action(‘admin_init’, …)…e ancheregister_setting()add_settings_section()add_settings_field()Una serie di funzioni…

Si consiglia di leggere Dall’approccio iniziale alla padronanza: Guida completa allo sviluppo di plugin per WordPress

/**
 * 初始化插件的设置。
 */
function my_hello_settings_init() {
    // 注册一个设置项到数据库的‘my_hello_options’键下
    register_setting( ‘my_hello_options‘, ’my_hello_greeting_text’ );

// 在页面中添加一个设置区域
    add_settings_section(
        ‘my_hello_section’, // 区域ID
        ‘问候语设置’,        // 区域标题
        ‘my_hello_section_html’, // 区域描述的回调函数
        ‘my-hello-plugin’ // 所属页面slug
    );

// 在区域内添加一个具体的设置字段
    add_settings_field(
        ‘my_hello_field’, // 字段ID
        ‘自定义问候语’,    // 字段标签
        ‘my_hello_field_html’, // 用于渲染字段HTML的回调函数
        ‘my-hello-plugin’, // 所属页面slug
        ‘my_hello_section’ // 所属区域ID
    );
}
add_action( ‘admin_init‘, ’my_hello_settings_init’ );

/**
 * 设置区域的描述信息。
 */
function my_hello_section_html() {
    echo ‘<p>Qui è possibile impostare il testo del saluto da visualizzare all’inizio dell’articolo.</p>’;
}

/**
 * 渲染设置字段的HTML。
 */
function my_hello_field_html() {
    // 从数据库获取已保存的值,如果没有则使用默认值
    $greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
    ?&gt;
    <input type="‘text’"
           id="‘my_hello_greeting_text’"
           name="‘my_hello_greeting_text’"
           value="“NO NUMERIC NOISE KEY" 1000”
 class="“regular-text”" />
    <p class="“description”">Inserisci il saluto che desideri visualizzare all’inizio del contenuto dell’articolo.</p>
    &lt;?php
}

Ora che abbiamo una pagina di configurazione del backend con un campo di input, dobbiamo modificare le funzioni di funzionalità iniziali.my_hello_add_greetingFai in modo che legga i saluti dagli elementi presenti nel database.

function my_hello_add_greeting( $content ) {
    // 获取保存的自定义问候语,如果不存在则使用默认值
    $custom_greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
    $greeting = ‘<p style="“background-color:#f0f8ff;" padding:10px; border-left:4px solid #0073aa;”><strong>’ . esc_html( $custom_greeting ) . ‘</strong></p>’;
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $greeting . $content;
    }
    return $content;
}

A questo punto, il plugin che dispone di funzionalità di configurazione di base è completo. Gli utenti possono modificare liberamente il testo dei messaggi di saluto nel menu “Plugin di Saluto” presente nell’area di amministrazione, e i messaggi presenti negli articoli visualizzati dagli utenti verranno automaticamente aggiornati con le nuove impostazioni.

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.

Best Practices e Sicurezza nello Sviluppo di Plugin

Sviluppare un plugin per WordPress da utilizzare da altri richiede non solo che le funzionalità siano complete, ma anche che vengano rispettate le migliori pratiche in termini di sicurezza, prestazioni e mantenibilità.

Considerazioni sulla sicurezza

La sicurezza è il principio fondamentale. Non fidarsi mai degli input forniti dagli utenti. Tutti i dati raccolti dagli utenti (ad esempio…)$_GET$_POST$_COOKIEPrima di utilizzarli per interrogare i database, visualizzarli sulle pagine web o eseguire operazioni su file, è necessario effettuare una corretta pulizia, verifica e codifica dei dati (con l’uso di caratteri di escape).

Per i dati che vengono visualizzati su una pagina HTML, è consigliabile utilizzare…esc_html()esc_attr()wp_kses_post()È necessario utilizzare funzioni di escape per i caratteri speciali. Per le variabili utilizzate nelle query al database, è obbligatorio applicare tali funzioni.$wpdb->prepare()Per eseguire query parametrizzate, è assolutamente vietato incollare direttamente i valori delle variabili nelle istruzioni SQL. Nei plugin, è sempre consigliabile utilizzare questo approccio.defined(‘ABSPATH’) or die;Per impedire che i file vengano accessati direttamente.

Organizzazione del codice e internazionalizzazione

Con l’aumento delle funzionalità dei plugin, scrivere tutto il codice in un unico file principale diventa difficile da mantenere. La pratica più consigliabile è suddividere il codice in base alle funzionalità, inserendolo in file separati. Di solito, il file principale è responsabile della definizione degli “hook” (meccanismi di interazione tra componenti) e dei processi centrali del sistema, mentre le pagine di configurazione, le funzioni specifiche, le definizioni delle classi, ecc., vanno collocate in file dedicati.includes/admin/public/In tali sottodirectory, e tramite…require_onceIntroduzione.

Per permettere ai tuoi plugin di essere utilizzati da utenti in tutto il mondo, è necessario supportare l’internazionalizzazione (i18n). Ciò significa che tutte le stringhe di testo visualizzate all’interno dei plugin devono essere tradotte utilizzando le funzionalità di traduzione fornite da WordPress.__()_e()Esecutare l’imballaggio e…Text DomainAbbiamo impostato un identificatore unico (ad esempio, il nome della directory del plugin). Nel blocco di commenti all’inizio del file, l’identificatore è già stato definito.Text Domain: my-hello-pluginNel codice, dovrebbe essere utilizzato in questo modo:

$greeting = ‘<p><strong>’ . esc_html__( ‘您好,读者!欢迎阅读本文。’ , ’my-hello-plugin’ ) . ‘</strong></p>’;

In questo modo, i traduttori potranno utilizzarlo..po.moIl file contiene le traduzioni per i diversi linguaggi del tuo plugin.

Ottimizzazione delle prestazioni

I plugin dovrebbero ridurre al minimo l’impatto sulle prestazioni del sito web. È necessario evitare di eseguire un gran numero di query al database o calcoli complessi ad ogni caricamento della pagina, soprattutto sul lato front-end. Utilizzare in modo appropriato l’API di cache transitoria (Transients API) di WordPress per memorizzare i risultati delle query che non cambiano frequentemente. Ad esempio, se si desidera memorizzare i risultati di una richiesta API, si può procedere come segue:

$data = get_transient( ‘my_plugin_api_data’ );
if ( false === $data ) {
    // 数据不存在或已过期,从API获取
    $data = wp_remote_retrieve_body( wp_remote_get( ‘https://api.example.com/data’ ) );
    // 将数据存储12小时
    set_transient( ‘my_plugin_api_data’, $data, 12 * HOUR_IN_SECONDS );
}
// 使用 $data

Inoltre, assicurati che i file CSS e JavaScript vengano caricati solo sulle pagine necessarie. Utilizza…wp_enqueue_script()wp_enqueue_style()Funzioni, abbinate ai giusti “hook” (ad esempio…)wp_enqueue_scriptsPer caricare i risorse front-end, si utilizza il metodo appropriato; per i risorse back-end, invece, si adotta un approccio diverso.admin_enqueue_scriptsGancio.

Riassumendo

Seguendo passo dopo passo le indicazioni di questo articolo, abbiamo completato il percorso di sviluppo di un plugin che è partito da una semplice versione “Hello World” per arrivare a uno strumento pratico dotato di opzioni di configurazione in background e che rispetta i principi di base della sicurezza e dell’organizzazione del codice. La chiave del successo risiede nella comprensione e nell’utilizzo dei meccanismi fondamentali di WordPress: il sistema di hook. Questo sistema ci permette di estendere le funzionalità della piattaforma in modo modulare e non invasivo. Sia che si tratti di modificare i contenuti (con i filtri) che di eseguire compiti specifici (con le azioni), gli hook fungono da ponte tra il nostro codice e il mondo di WordPress.

Ricorda: lo sviluppo di plugin di qualità non consiste semplicemente nel far funzionare le funzionalità previste. Implica un trattamento rigoroso e sicuro dei dati forniti dagli utenti, un’organizzazione chiara del codice, il supporto per l’internazionalizzazione e una attenta valutazione delle prestazioni del sito web. Ogni passo – dalla definizione chiara dei file di configurazione del plugin, all’utilizzo di API standard per creare menu e impostazioni, fino all’escapamento sicuro dei dati in output – influisce sulla qualità, sulla sicurezza e sull’esperienza d’uso del plugin stesso. Continuando ad esplorare le numerose API e funzioni di WordPress, sarai in grado di creare plugin potenti e affidabili.

FAQ - Domande frequenti

Quali sono le basi necessarie per lo sviluppo di plugin?

È necessario disporre di una conoscenza di base della lingua di programmazione PHP, inclusi concetti fondamentali come variabili, funzioni, array, condizioni di controllo e cicli. Inoltre, avere una conoscenza di base di HTML e CSS è molto utile, poiché i plugin spesso richiedono la generazione o la modifica dell’interfaccia utente front-end. Una conoscenza delle funzionalità di base di WordPress e della sua struttura di back-end renderà il processo di sviluppo più fluido.

Come posso debuggare il mio plugin WordPress?

Prima di tutto, assicurati che…wp-config.phpNel file è stato attivato il modalità di debug di WordPress. Questo è stato possibile impostando alcune configurazioni specifiche.define('WP_DEBUG', true);define('WP_DEBUG_LOG', true);L’informazione sull’errore verrà registrata.wp-content/debug.logNel file, questo metodo è più sicuro rispetto alla semplice visualizzazione direttamente sulla pagina. Inoltre, è possibile utilizzarlo in combinazione con altri strumenti o approcci.error_log()La funzione permette di stampare i valori delle variabili; in alternativa, è possibile utilizzare i pannelli “Rete” (“Network”) e “Console” degli strumenti di sviluppo del browser per verificare eventuali problemi nei script front-end e negli stili grafici.

Il plugin che ho sviluppato può essere caricato nel catalogo ufficiale di plugin?

Certo, ma è necessario rispettare i requisiti ufficiali per la submission di plugin di WordPress. Questi includono il rispetto della licenza compatibile con GPL, l’adeguamento agli standard di codifica di WordPress, la garantia della sicurezza del codice (escludendo contenuti dannosi), nonché la fornitura di documentazioni chiare e complete. Prima di inviare il plugin, ti consigliamo di leggere attentamente il manuale per gli sviluppatori e le linee guida per la submission forniti da WordPress. Il processo di submission avviene tramite il sistema dedicato presente su WordPress.org, dove il plugin verrà esaminato per verificare la sua conformità ai requisiti.

Qual è la differenza tra le funzionalità di un plugin e di un tema? Quando è opportuno sviluppare un plugin?

Il “Theme” (tema) controlla principalmente l’aspetto e la struttura di un sito web, e si occupa solitamente dei file di template, delle tabelle di stile (style sheets) nonché di alcune funzionalità legate alla visualizzazione dei contenuti. I “Plugin”, invece, servono per aggiungere o modificare funzionalità al sito web; il loro impatto, nella maggior parte dei casi, non dipende dal tema attualmente in uso. Un buon principio da seguire è: se una funzionalità è strettamente legata all’aspetto del sito (ad esempio, la disposizione delle pagine o l’impostazione dei colori), è opportuno includerla direttamente nel tema; se invece si tratta di una funzionalità generale e indipendente (come moduli di contatto, ottimizzazioni per i motori di ricerca o meccanismi di caching), che dovrebbe essere disponibile indipendentemente dal tema scelto, allora è meglio svilupparla come plugin. Questo approccio aiuta a mantenere una separazione chiara tra le funzionalità e il design del sito, migliorando così la flessibilità del sistema.