Imparare a sviluppare plugin per WordPress: creare il tuo primo plugin personalizzato da zero.

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

Perché scegliere lo sviluppo di plugin per WordPress?

WordPress, come il sistema di gestione dei contenuti più popolare al mondo, deve la sua notevole estensibilità soprattutto ai plugin. Sviluppando plugin personalizzati, è possibile aggiungere funzionalità uniche alla piattaforma principale per soddisfare esigenze aziendali specifiche, senza dover modificare i file relativi ai temi (theme files). Questo garantisce che il codice delle funzionalità non venga perso in caso di aggiornamenti dei temi e rende le funzionalità modulari, facilitandone il riutilizzo su diversi siti web.

Imparare a sviluppare plugin non solo ti permette di creare prodotti utilizzabili da altri, ma ti aiuta anche a comprendere più a fondo il funzionamento di WordPress, inclusi il suo sistema di “hook”, le interazioni con il database e le migliori pratiche di sicurezza. Questo rappresenta un passo fondamentale per passare da un utente ordinario a uno sviluppatore avanzato.

Crea il tuo primo plugin.

Prima di iniziare a scrivere il codice, è necessario configurare un ambiente WordPress standard sia localmente che su un server di test. Questo rappresenta la base di tutto il lavoro di sviluppo.

Si consiglia di leggere Imparare dall'inizio lo sviluppo di plugin per WordPress: creare la tua prima funzionalità personalizzata.

Creare il file principale del plugin

Ogni plugin per WordPress deve avere un file principale, che di solito prende il nome dello stesso plugin. Creeremo un file chiamato…my-first-pluginIl plugin in questione… Per prima cosa, si trova nella directory di installazione di WordPress./wp-content/plugins/All’interno della cartella, creare una nuova cartella con il nome…my-first-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).

All’interno di quella cartella, creare un file chiamato…my-first-plugin.phpSi tratta di un file PHP che rappresenta il punto di ingresso per il plugin. Apri il file e aggiungi le seguenti note di testo relative alla struttura del plugin: queste informazioni sono essenziali affinché WordPress possa riconoscere correttamente il tuo plugin.

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://yourwebsite.com/my-first-plugin
 * Description:       这是一个学习WordPress插件开发的示例插件,用于在文章底部添加自定义内容。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://yourwebsite.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Implementare la prima funzionalità semplice

Una funzionalità classica per i principianti è quella che permette di aggiungere automaticamente un testo in fondo a tutti i contenuti degli articoli sul sito web. Utilizzeremo WordPress per implementarla. the_content Per implementare questo funzionamento, utilizza i “filter hooks”. Aggiungi la seguente funzione sotto le note presenti all’inizio del tuo file principale:

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

/**
 * 在文章内容末尾添加自定义文本
 *
 * @param string $content 原始的文章内容。
 * @return string 修改后的文章内容。
 */
function mfp_add_footer_text( $content ) {
    // 判断是否是主循环且在单篇文章页面
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = '<div class="mfp-footer-note"><p><em>Grazie per la lettura! Questo articolo è stato realizzato per voi da “Il mio primo plugin”.</em></p></div>';
        return $content . $custom_text;
    }
    return $content;
}
// 将函数挂载到 `the_content` 过滤器上
add_filter( 'the_content', 'mfp_add_footer_text' );

Questo codice definisce una funzione. mfp_add_footer_textRiceve il contenuto dell’articolo. $content Come parametro, all’interno della funzione viene prima verificato se l’ambiente corrente si trovi sulla pagina di un singolo articolo, nel ciclo principale o nella query principale. Questo viene fatto per evitare che il testo venga aggiunto anche nell’abstract, negli strumenti aggiuntivi (widget) o in altre parti del sito. Se le condizioni sono soddisfatte, viene creato un pezzo di testo HTML personalizzato e questo viene inserito dopo il contenuto originale.

Approfondire l’architettura dei plugin e la sicurezza

Con l’aumentare delle funzionalità dei plugin, un’organizzazione del codice efficace diventa di fondamentale importanza. Allo stesso tempo, la sicurezza rappresenta l’elemento essenziale in ogni sviluppo per WordPress.

Si consiglia di leggere Imparare a sviluppare plugin per WordPress: creare il tuo primo modulo di funzionalità estesa da zero.

Ristrutturare il codice utilizzando la programmazione orientata agli oggetti.

Al fine di migliorare la manutenibilità e l’espandibilità del codice, si consiglia di utilizzare un approccio orientato agli oggetti (OOP) per organizzare i plugin. Ristruttureremo le funzionalità descritte in precedenza in una classe.

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

class My_First_Plugin {
    /**
     * 构造函数,初始化插件钩子。
     */
    public function __construct() {
        // 在构造方法中将方法挂载到钩子上
        add_action( 'init', array( $this, 'load_textdomain' ) );
        add_filter( 'the_content', array( $this, 'add_footer_to_content' ) );
        add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) );
    }

/**
     * 加载插件的文本翻译域。
     */
    public function load_textdomain() {
        load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
    }

/**
     * 在文章内容末尾添加自定义文本。
     */
    public function add_footer_to_content( $content ) {
        if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
            $custom_text = '<div class="mfp-footer-note"><p><em>' . esc_html__( '感谢阅读!本文由“我的第一个插件”为您呈现。', 'my-first-plugin' ) . '</em></p></div>';
            return $content . $custom_text;
        }
        return $content;
    }

/**
     * 为插件添加样式。
     */
    public function enqueue_styles() {
        wp_enqueue_style( 'mfp-style', plugins_url( 'assets/css/style.css', __FILE__ ), array(), '1.0.0' );
    }
}

// 实例化插件类
$my_first_plugin_instance = new My_First_Plugin();

Si prega di notare che… add_footer_to_content Il metodo utilizza… esc_html__() Questa funzione serve per “avvolgere” il testo all’interno di un contesto appropriato. Si tratta di una funzione di traduzione che, al contempo, esegue anche l’escape necessario sul testo generato, seguendo le migliori pratiche per l’output sicuro di informazioni. Abbiamo inoltre aggiunto un metodo per caricare i file di stile (style sheets) e introdotto il supporto per i campi di testo, preparando così l’interfaccia per l’internazionalizzazione (i18n) dei plugin.

Comprendere e implementare la validazione e l'evasione dei dati

Non fidarti mai degli input forniti dagli utenti o di qualsiasi dato esterno. Quando ricevi, elabori o visualizzi dati, è essenziale effettuare controlli di validità, pulizie e operazioni di “escape” (per evitare problemi legati alla formattazione dei caratteri). Ad esempio, se vuoi creare una pagina di gestione con moduli di input, assicurati di utilizzare le funzionalità offerte da WordPress per verificare l’autenticità degli utenti, i loro diritti di accesso e la validità dei dati inseriti.

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%

La funzionalità di questo plugin è relativamente semplice, ma abbiamo già utilizzato le sue caratteristiche durante la generazione del codice HTML. esc_html__() Eseguire l’escapamento dei caratteri. Se un plugin deve elaborare i dati inviati dall’utente, ad esempio tramite un modulo, è necessario utilizzare i metodi appropriati per evitare problemi di interpretazione dei dati. sanitize_text_field(), wp_kses_post() Eseguire la pulizia delle funzioni relative e utilizzare… wp_verify_nonce() Per verificare la legittimità della richiesta.

Creare una pagina di gestione dei plugin

Un plugin maturo di solito richiede una pagina di configurazione sul lato server. Impareremo come utilizzare l’API di configurazione di WordPress per creare una pagina di gestione semplice e standard.

Aggiungi il menu di configurazione dei plugin.

Prima di tutto, dobbiamo aggiungere una nuova pagina di menu sottocategoria all’interno del menu “Impostazioni” presente nell’interfaccia di amministrazione di WordPress. Aggiungi un nuovo metodo nella tua classe e, nel costruttore, utilizzalo per configurare le impostazioni necessarie. add_action('admin_menu', ...) Il “hook” lo chiama.

Si consiglia di leggere Una guida introduttiva allo sviluppo di plugin per WordPress: crea il tuo primo plugin funzionale da zero.

/**
 * 注册插件管理页面。
 */
public function register_admin_menu() {
    add_options_page(
        __( '我的插件设置', 'my-first-plugin' ), // 页面标题
        __( '我的第一个插件', 'my-first-plugin' ), // 菜单标题
        'manage_options', // 所需权限
        'mfp-settings', // 菜单slug
        array( $this, 'display_settings_page' ) // 显示页面的回调函数
    );
}

Poi, aggiungi nel costruttore:add_action( 'admin_menu', array( $this, 'register_admin_menu' ) );

Creare una pagina di configurazione e i relativi campi

Di seguito, abbiamo bisogno di definire display_settings_page Metodo utilizzato per rendere il contenuto HTML della pagina delle impostazioni e per registrare un campo di impostazione tramite l’API di configurazione.

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.
/**
 * 显示插件设置页面。
 */
public function display_settings_page() {
    ?&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
            // 输出设置字段、非ce等安全字段
            settings_fields( 'mfp_settings_group' );
            do_settings_sections( 'mfp-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="it"/></form>
    </div>
    <?php
}

/**
 * 初始化插件设置。
 */
public function initialize_settings() {
    // 注册一个设置
    register_setting(
        'mfp_settings_group', // 设置组名
        'mfp_footer_text', // 选项名
        array(
            'type' => 'string',
            'sanitize_callback' =&gt; 'sanitize_text_field', // 清理回调函数
            'default' =&gt; __( '感谢阅读!本文由“我的第一个插件”为您呈现。', 'my-first-plugin' ),
        )
    );

// 添加一个设置区域
    add_settings_section(
        'mfp_main_section',
        __( '主要设置', 'my-first-plugin' ),
        null, // 可选的区域描述回调函数
        'mfp-settings'
    );

// 向区域中添加字段
    add_settings_field(
        'mfp_footer_field',
        __( '页脚文本', 'my-first-plugin' ),
        array( $this, 'render_footer_field' ), // 渲染字段的回调函数
        'mfp-settings',
        'mfp_main_section',
        array( 'label_for' =&gt; 'mfp_footer_text' )
    );
}

Devi definire… render_footer_field Un metodo per renderizzare il campo di input effettivo e aggiornare il contenuto precedente. add_footer_to_content Metodo per far sì che venga selezionato dall’elenco delle opzioni del database. get_option('mfp_footer_text') Leggi il testo da un file, invece di utilizzare stringhe fissate in codice. Infine, aggiungi il seguente codice nel costruttore:add_action( 'admin_init', array( $this, 'initialize_settings' ) );

Riassumendo

Durante il percorso descritto in questo articolo, hai costruito da zero un plugin WordPress completo e funzionale. Hai imparato come creare la struttura di base di un plugin, come utilizzare gli “action” e gli “filter hooks” per estendere le funzionalità di WordPress, come organizzare il codice in modo oggettivo al fine di migliorarne la qualità, come seguire le migliori pratiche di sicurezza per verificare e escapare i dati, nonché come utilizzare l’API di configurazione di WordPress per creare interfacce di gestione da back-end professionali.

Il cuore dello sviluppo di plugin consiste nella comprensione del sistema di “hook” (meccanismi di interazione) e del flusso dei dati di WordPress. Continua a praticare, iniziando con funzionalità semplici, aumentando gradualmente la complessità dei tuoi plugin, e poni sempre al primo posto sicurezza, prestazioni e mantenibilità. Con l’acquisizione di esperienza, sarai in grado di creare plugin per WordPress potenti, professionali e apprezzati dagli utenti.

FAQ - Domande frequenti

Quali sono le basi per sviluppare i plugin di WordPress?

È necessario disporre di solide conoscenze di programmazione in PHP, poiché i plugin sono principalmente scritti in questo linguaggio. Inoltre, è fondamentale avere una conoscenza di base di HTML, CSS e JavaScript per gestire la visualizzazione e l’interazione dell’interfaccia utente. La cosa più importante è essere familiari con i concetti fondamentali di WordPress, come gli “hook” (azioni e filtri), i cicli, la struttura dei template e le operazioni sul database (utilizzando classi come WP_Query e WP_User_Query).

Come debuggare e testare il mio plugin?

Innanzitutto, si consiglia caldamente di sviluppare il progetto nell’ambiente di sviluppo locale (ad esempio Local by Flywheel, XAMPP) o su un sito di test online, per evitare di influenzare il sito ufficiale. Attiva il modalità di debug di WordPress e…wp-config.phpI parametri sono impostati nel file.define( 'WP_DEBUG', true );Questo permetterà di visualizzare gli errori e gli avvisi di PHP sullo schermo. Utilizzalo per ottenere informazioni utili durante lo sviluppo del tuo sito web.error_log()La funzione registra le informazioni di debug personalizzate nel log di errori del server. Per un debug più avanzato, si possono considerare l’utilizzo di strumenti professionali come Query Monitor o Debug Bar.

Come posso far sì che il mio plugin sia compatibile con diverse versioni di WordPress?

Durante lo sviluppo, è importante prestare attenzione alle notifiche presenti nei documenti ufficiali di WordPress riguardo alle funzioni obsolete. È necessario evitare l’uso di funzioni che siano state contrassegnate come “obsolette”. Nel file principale del plugin, è possibile…Requires at leastTested up toLe informazioni presenti nella parte iniziale del file servono per dichiarare la compatibilità del tuo plugin con le versioni di WordPress. Testa regolarmente il tuo plugin su versioni più recenti di WordPress e segui i log degli aggiornamenti del codice sorgente di WordPress, in modo da poter modificare il codice in tempo utile.

Come pubblicare il mio plugin nel catalogo ufficiale di plugin di WordPress?

Prima di tutto, devi assicurarti che il tuo plugin sia completamente in linea con le norme ufficiali per lo sviluppo di plugin e le guide per la loro submission. Ciò include la qualità del codice, la sicurezza, l’accordo di licenza (deve essere GPLv2 o una versione più recente), e così via. Successivamente, richiedi un repository SVN su WordPress.org e invia il codice del tuo plugin in quel repository.trunkÈ presente nel catalogo; inoltre, sono stati creati i file corrispondenti.readme.txtIl file deve essere creato utilizzando un formato specifico. Una volta superata la revisione, il tuo plugin verrà inserito nel catalogo ufficiale.