Una guida pratica allo sviluppo di plugin per WordPress: costruisci il tuo primo plugin da zero.

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

Nell’immenso mondo di Internet, WordPress ha conquistato una posizione di rilievo tra i sistemi di gestione dei contenuti grazie alla sua notevole estensibilità. Il cuore di questa estensibilità sono i plugin: grazie a loro, è possibile aggiungere al sito qualsiasi funzionalità si possa immaginare. In questo articolo, ti guideremo passo dopo passo nella creazione del tuo primo plugin per WordPress, perfettamente comprendendo la sua struttura fondamentale e il processo di sviluppo.

Fundamenti dei plugin per WordPress e configurazione dell’ambiente di sviluppo

Prima di iniziare a codificare, è fondamentale comprendere la natura dei plugin per WordPress e creare un ambiente di sviluppo appropriato. Un plugin è essenzialmente uno o più file PHP che seguono le specifiche di WordPress e interagiscono con il sistema di WordPress in modo da aggiungere nuove funzionalità o modificare quelle esistenti.钩子Interagisce con i sistemi centrali (core systems).

Definizione di base di un plugin

Ogni plugin deve disporre di un file principale unico, all’interno del quale le informazioni relative al plugin vengono dichiarate tramite commenti scritti in un formato specifico. Questi commenti costituiscono la base per il riconoscimento dei plugin da parte di WordPress e per la visualizzazione dei loro metadati, come nome, descrizione, versione, ecc., sulla pagina di gestione dei plugin.

Si consiglia di leggere Rivelazioni sullo sviluppo di plugin: costruisci il tuo primo estensione da zero

Configurazione dell’ambiente di sviluppo locale

Per sviluppare in modo efficiente e sicuro, si consiglia caldamente di utilizzare un ambiente server locale. Puoi scegliere strumenti come XAMPP, MAMP, Local by Flywheel o Docker. I requisiti fondamentali sono l’installazione di PHP (la versione deve essere compatibile con il server di destinazione), MySQL/MariaDB e Apache/Nginx. Successivamente, scarica i file principali di WordPress e completa l’installazione.

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 plugin: una piccola utility per i messaggi di saluto.

Ora, mettiamoci all’opera per creare un semplice plugin. La funzione di questo plugin è quella di aggiungere automaticamente un saluto personalizzato alla fine del contenuto degli articoli sul sito web.

Prima di tutto, in WordPress… wp-content/plugins All’interno del directory, crea una nuova cartella e dale il nome di… my-first-greeting-pluginPoi, all’interno di quella cartella, crea il file PHP principale; può essere chiamato… my-first-greeting-plugin.php

Plugin Header Information Declaration

Apri il file principale e inserisci il seguente codice per definire il plugin:

<?php
/**
 * Plugin Name:       我的第一个问候语插件
 * Plugin URI:        https://yourwebsite.com/my-first-greeting-plugin
 * Description:       这是一个练习用的插件,用于在文章末尾添加问候语。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://yourwebsite.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-greeting-plugin
 */

Dopo aver salvato il file, accedi alla pagina “Plugin” nell’interfaccia di amministrazione di WordPress: dovresti vedere questo nuovo plugin nell’elenco dei plugin disponibili e poterlo attivare. Naturalmente, al momento non dispone di alcuna funzionalità.

Si consiglia di leggere 10 strategie chiave e guide pratiche per ottimizzare le prestazioni dei siti web di e-commerce basati su WooCommerce

Utilizzare degli “hook” per aggiungere funzionalità fondamentali.

Il funzionamento di WordPress dipende in modo significativo dal meccanismo dei “hook” (ganci), che sono divisi in…动作钩子(Azione Hooks) e过滤器钩子(Filtro Hooks): Dobbiamo aggiungere del testo dopo il contenuto dell’articolo; per farlo, dobbiamo utilizzare… the_content Questo filtro hook.

Sotto i commenti presenti all’inizio del file principale, aggiungi le seguenti funzioni e hook:

// 定义向文章内容添加问候语的函数
function mfgp_add_greeting_to_content( $content ) {
    // 确保只在主循环的单篇文章页面显示
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $greeting = '<p style="color:#666; font-style:italic;">Grazie per aver letto questo articolo! Ti auguro una bella giornata!</p>';
        $content .= $greeting;
    }
    return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器钩子上
add_filter( 'the_content', 'mfgp_add_greeting_to_content' );

Dopo aver salvato il file e attivato il plugin, apri qualsiasi articolo sul sito web, scorri fino alla fine e dovresti vedere il saluto che hai aggiunto. Con questo semplice esempio hai messo in pratica i concetti più fondamentali dello sviluppo di plugin: dichiarare il plugin, scrivere le funzioni necessarie per il suo funzionamento, e…add_filteradd_actionMonta la funzione sul gancio (hook) corretto.

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%

Miglioramenti alle funzionalità degli plugin: è stata aggiunta una pagina per la gestione delle impostazioni.

Un plugin maturo consente di solito agli utenti di effettuare configurazioni in modalità background. Ora aggiungeremo una semplice pagina di impostazioni al plugin per i messaggi di saluto, in modo che gli amministratori possano personalizzare il testo da visualizzare.

Creare una voce di menu di gestione.

Innanzitutto, dobbiamo utilizzare…add_actionIl “hook” chiama una funzione, e questa funzione utilizzerà… add_options_page La funzione aggiunge una pagina secondaria al menu “Impostazioni” presente nell’interfaccia di amministrazione di WordPress.

Continua ad aggiungere il seguente codice nel file principale:

Si consiglia di leggere Dallo zero all’uno: Guida completa e tutorial pratico per lo sviluppo di plugin per WordPress

// 添加设置菜单
function mfgp_add_admin_menu() {
    add_options_page(
        '问候语插件设置',          // 页面标题
        '自定义问候语',           // 菜单标题
        'manage_options',         // 权限要求(管理员)
        'my-greeting-plugin',     // 菜单 Slug
        'mfgp_settings_page_html' // 用于输出页面内容的回调函数
    );
}
add_action( 'admin_menu', 'mfgp_add_admin_menu' );

Creare la pagina di configurazione e la logica di salvataggio.

Ora dobbiamo definire la funzione di callback menzionata sopra. mfgp_settings_page_html Per renderizzare il form HTML relativo alla pagina delle impostazioni e gestire il salvataggio dei dati inseriti, WordPress fornisce un API per semplificare il processo. Tuttavia, al fine di comprendere chiaramente il funzionamento di tutto, utilizzeremo prima i metodi più basilari.

// 定义设置页面的 HTML 结构
function mfgp_settings_page_html() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        return;
    }

// 处理表单提交(非设置API方式)
    if ( isset( $_POST['mfgp_greeting_text'] ) ) {
        // 验证 Nonce 确保请求来源安全
        check_admin_referer( 'mfgp_save_settings' );
        // 清理并保存输入的数据
        $greeting_text = sanitize_textarea_field( $_POST['mfgp_greeting_text'] );
        update_option( 'mfgp_custom_greeting', $greeting_text );
        echo '<div class="notice notice-success is-dismissible"><p>Le impostazioni sono state salvate!</p></div>';
    }

// 获取已保存的问候语
    $saved_greeting = get_option( 'mfgp_custom_greeting', '感谢您阅读本文!祝你拥有美好的一天!' );
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
        <form method="post" action="">
            <?php wp_nonce_field( 'mfgp_save_settings' ); ?>
            <table class="form-table">
                <tr>
                    <th scope="row"><label for="mfgp_greeting_text">Saluto personalizzato</label></th>
                    <td>
                        <textarea name="mfgp_greeting_text" id="mfgp_greeting_text" rows="5" cols="50" class="large-text"><?php echo esc_textarea( $saved_greeting ); ?></textarea>
                        <p class="description">Questo testo verrà visualizzato alla fine di ogni articolo.</p>
                    </td>
                </tr>
            </table>
            <?php submit_button( '保存更改' ); ?>
        <input type="hidden" name="trp-form-language" value="it"/></form>
    </div>
    &lt;?php
}

Aggiornare la funzione di output del lato front-end.

Infine, dobbiamo modificare la funzione di output front-end precedente in modo che prenda i dati dagli opzioni presenti nel database.get_optionLeggi il saluto da un file, invece di utilizzare testi codificati in modo fisso (hardcoded).

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.
function mfgp_add_greeting_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        // 从数据库选项中获取问候语,如果没有则使用默认值
        $greeting_text = get_option( 'mfgp_custom_greeting', '感谢您阅读本文!祝你拥有美好的一天!' );
        if ( ! empty( $greeting_text ) ) {
            $greeting = '<p style="color:#666; font-style:italic;">'`. esc_html($greeting_text).`'</p>';
            $content .= $greeting;
        }
    }
    return $content;
}

Ora, l’amministratore può modificare liberamente il testo visualizzato sulla pagina “Impostazioni” -> “Saluti personalizzati”, e l’aggiornamento verrà immediatamente visualizzato nell’interfaccia utente.

Preparazione alla pubblicazione del plugin: internazionalizzazione e rafforzamento della sicurezza

Prima di condividere i plugin con altri o di inviarli al catalogo ufficiale, è necessario eseguire alcune operazioni finali importanti, principalmente per garantire la corretta localizzazione dei contenuti (internazionalizzazione) e il miglioramento delle misure di sicurezza.

Implementare l’internazionalizzazione del testo

L’internazionalizzazione (i18n) permette di tradurre i tuoi plugin in altre lingue. È necessario incapsulare tutte le stringhe destinate all’utente utilizzando funzioni specifiche. Modifica le stringhe presenti nel nostro plugin:

1. Nelle note presenti all’inizio del plugin, abbiamo già definito… Text Domain
2. Nell’codice, utilizzare… ()esc_html() La funzione incapsula una stringa. Ad esempio:

    // 在设置页面函数中
    $greeting_text = get_option( 'mfgp_custom_greeting', __( ‘感谢您阅读本文!祝你拥有美好的一天!’, ‘my-first-greeting-plugin’ ) );
    echo ‘<h1>’ . esc_html__( ‘问候语插件设置’, ‘my-first-greeting-plugin’ ) . ‘</h1>’// Nella funzione di output front-end (nota: di solito non è necessario tradurre l’output front-end, a meno che non sia deciso dal tema o dall’utente);
// tuttavia, se il saluto stesso deve essere disponibile in più lingue, potrebbe essere necessaria una logica più complessa.

3. Utilizzare strumenti come Poedit per la creazione. .pot File di template: i traduttori possono utilizzarli per creare i contenuti desiderati. .po.mo Documenti.

Rafforzare le misure di sicurezza

La sicurezza è di fondamentale importanza. Abbiamo già utilizzato alcune funzioni di sicurezza, come…sanitize_textarea_fieldesc_htmlesc_textareawp_nonce_fieldInoltre, è necessario prestare attenzione anche a:
* 权限检查:在管理页面函数开始处使用 current_user_can Effettuare un controllo.
* 数据验证与清理:对所有用户输入(如 $_POST, $_GET)进行验证(是否符合预期格式)和清理(移除非法字符)。
* 非竞态条件更新:对于重要的选项,考虑使用 wp_options Quando si lavora con tabelle, un modo più sicuro è utilizzare l’API Settings, che include funzionalità per il controllo dei “nonce” (valori unici generati casualmente) e dei permessi degli utenti in modo da evitare concorrenze non desiderate tra le richieste.

Riassumendo

Attraverso questa guida, abbiamo completato il percorso completo dalla creazione alla pubblicazione di un plugin WordPress funzionale. Abbiamo iniziato comprendendo i fondamenti dei plugin, creando il file principale del plugin che includeva le informazioni di intestazione standard; successivamente, abbiamo messo in pratica il meccanismo dei “hook” (punti di interazione) fondamentali di WordPress attraverso una semplice funzione di saluto; inoltre, abbiamo aggiunto una pagina di configurazione per il backend del plugin, permettendo agli utenti di personalizzarne le impostazioni; infine, abbiamo analizzato gli step chiave prima della pubblicazione: l’internazionalizzazione e il rafforzamento della sicurezza. Ogni passaggio ha incluso funzioni essenziali di WordPress e le migliori pratiche di sviluppo. Una volta acquisite queste conoscenze di base, potrai provare a sviluppare plugin più complessi e creativi, contribuendo così all’ecosistema WordPress a livello globale.

FAQ - Domande frequenti

Quali sono le conoscenze preliminari necessarie per sviluppare plugin per WordPress?

È necessario disporre di conoscenze di base di programmazione in PHP, comprendere i linguaggi HTML e CSS, nonché avere una certa dimestichezza con le operazioni di base di WordPress (come la creazione di articoli, pagine e menu). Non è obbligatorio essere esperti di programmazione orientata agli oggetti (OOP), ma questa conoscenza sarà molto utile per lo sviluppo di plugin più complessi.

Perché il mio plugin non appare nel menu di back-end dopo essere stato attivato?

Il motivo più comune è legato a problemi di autorizzazione. Per favore, verifica i tuoi diritti di accesso prima di eseguire l’operazione.add_options_pageQuando si utilizza una funzione simile, è necessario verificare se il secondo parametro (capability) è impostato correttamente. ‘manage_options’Inoltre, assicurati che la tua funzione sia stata implementata correttamente e che venga utilizzata nel modo previsto.add_action( ‘admin_menu’, ...)Il “hook” è stato montato correttamente, e non ci sono errori di sintassi che possano impedire l’esecuzione della funzione. Puoi aggiungerlo all’inizio del codice per garantire che venga eseguito come previsto.error_logUtilizzare funzioni per il debug.

Come devo debuggare il mio plugin per WordPress?

Prima di tutto, assicurati che nel tuo… wp-config.php Il file ha attivato il modalità di debug di WordPress. define( ‘WP_DEBUG’, true );define( ‘WP_DEBUG_LOG’, true );In questo modo, i messaggi di errore verranno registrati. /wp-content/debug.log Il file si trova all’interno del progetto. Inoltre, è possibile utilizzare le schede “Console” e “Rete” degli strumenti di sviluppo del browser per effettuare il debug del codice front-end. Per logiche più complesse, è consigliabile ricorrere a strumenti di analisi più avanzati.error_log( print_r( $variable, true ) );Estrarre i valori delle variabili e registrarli nei log è un metodo comunemente utilizzato.

Come può il mio plugin essere compatibile con altri plugin o temi?

Per garantire la massima compatibilità, il tuo plugin dovrebbe: 1) utilizzare prefissi unici per denominare tutte le funzioni, le classi, le variabili e le opzioni (esattamente come abbiamo fatto noi).mfgp_),避免命名冲突。2)在添加修改前端或后端样式时,尽量使用独特的选择器类名。3)在可能的情况下,提供过滤器钩子(apply_filtersPermette ad altri sviluppatori di modificare il comportamento del tuo plugin. 4) Evita di modificare direttamente le tabelle o i file del database principale di WordPress.