La struttura di base di un plugin per WordPress e il suo processo di creazione
Per sviluppare un plugin per WordPress, si inizia con un semplice file PHP. Questo file principale deve contenere delle specifiche annotazioni all’inizio del codice (chiamate “header comments”), in modo che WordPress possa riconoscerlo e gestirlo come un plugin. Il plugin più basilare può essere composto da un unico file. my-first-plugin.php。
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于演示的简单WordPress插件。
* Version: 1.0.0
* Author: 开发者姓名
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ La voce “Nome del plugin” presente nelle note del file di intestazione è obbligatoria; le altre informazioni sono opzionali. Dopo l’attivazione del plugin, le sue funzionalità vengono eseguite invocando funzioni PHP nei momenti appropriati. Un metodo molto comune per implementare questo meccanismo è l’utilizzo degli “action hooks”. Ad esempio, per aggiungere un testo nella parte inferiore di una pagina web, è possibile utilizzare gli action hooks per eseguire le relative istruzioni. wp_footer Gancio.
// 在页脚输出自定义内容
function myplugin_add_footer_text() {
echo '<p style="text-align:center;">Grazie per aver utilizzato il mio plugin!</p>';
}
add_action( 'wp_footer', 'myplugin_add_footer_text' ); add_action Si tratta di una funzione di base di WordPress, utilizzata per collegare funzioni personalizzate agli appuntamenti (action hooks) specificati. Si consiglia di posizionare il directory dei plugin in una directory appropriata all’interno del sito web. /wp-content/plugins/your-plugin-name/ Inoltre al file principale, è possibile includere anche file di risorse come CSS, JavaScript, immagini, ecc.
Si consiglia di leggere La guida definitiva ai temi di WordPress: una soluzione completa dalla selezione alla personalizzazione e allo sviluppo.。
Come aggiungere un menu di gestione per un plugin?
Per permettere al plugin di disporre di una pagina di configurazione nell’interfaccia di back-end di WordPress, è necessario aggiungergli un menu di gestione. Questo viene solitamente realizzato tramite… admin_menu Vengono utilizzati “action hooks” per realizzarlo.
Funzioni principali add_menu_page Per aggiungere un elemento di menu di livello superiore nella barra laterale del lato backend, insieme alla relativa pagina di configurazione.
function myplugin_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'myplugin-settings', // 菜单slug
'myplugin_settings_page', // 显示页面的回调函数
'dashicons-admin-generic', // 图标(可选)
6 // 菜单位置(可选)
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
// 设置页面的HTML内容
function myplugin_settings_page() {
?>
<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( 'myplugin_options' ); // 输出安全字段
do_settings_sections( 'myplugin-settings' ); // 输出设置区域
submit_button(); // 输出提交按钮
?>
<input type="hidden" name="trp-form-language" value="it"/></form>
</div>
<?php
} Dopo aver creato il menu, il passo successivo consiste nell’utilizzare l’API di configurazione di WordPress per definire le opzioni specifiche che possono essere personalizzate.
Utilizzare l’API di configurazione per salvare le impostazioni del plugin.
L’elaborazione manuale delle richieste di invio dei moduli e dei processi di verifica della sicurezza è una procedura noiosa e soggetta a errori. L’API di configurazione di WordPress offre un insieme di metodi standardizzati per registrare, visualizzare e salvare le impostazioni. Questo processo coinvolge principalmente tre funzioni:register_setting, add_settings_section 和 add_settings_field。
Esempio seguente mostra come registrare un gruppo di opzioni e aggiungere un campo di testo.
Si consiglia di leggere Guida all'ottimizzazione delle prestazioni dei siti WordPress: analisi approfondita e strategie pratiche.。
function myplugin_settings_init() {
// 注册一个新的设置项到数据库 `wp_options` 表中
register_setting( 'myplugin_options', 'myplugin_settings' );
// 在设置页面添加一个新的区域
add_settings_section(
'myplugin_section_basic', // 区域ID
'基础设置', // 区域标题
'myplugin_section_callback', // 区域说明的回调函数
'myplugin-settings' // 对应的页面slug
);
// 在区域中添加一个字段
add_settings_field(
'myplugin_field_text', // 字段ID
'示例文本', // 字段标题
'myplugin_field_text_cb', // 字段HTML输出的回调函数
'myplugin-settings', // 页面slug
'myplugin_section_basic' // 区域ID
);
}
add_action( 'admin_init', 'myplugin_settings_init' );
// 区域说明的回调函数
function myplugin_section_callback() {
echo '<p>Questa è la sezione per le impostazioni di base dei plugin.</p>';
}
// 文本字段的回调函数
function myplugin_field_text_cb() {
// 从数据库中获取之前保存的设置值
$options = get_option( 'myplugin_settings' );
$value = $options['myplugin_field_text'] ?? ''; // 使用空合并运算符提供默认值
// 输出HTML输入框
echo '<input type="text" name="myplugin_settings[myplugin_field_text]" value="' . esc_attr( $value ) . '" class="regular-text">';
echo '<p class="description">Per favore, inserisci alcuni esempi di testo.</p>';
} I valori delle impostazioni salvati in questo modo possono essere utilizzati in qualsiasi parte del codice del plugin. get_option('myplugin_settings') Acquistare e utilizzare in modo sicuro.
Sicurezza e migliori pratiche nello sviluppo di plugin
La sicurezza rappresenta un aspetto di fondamentale importanza nello sviluppo di plugin. Un plugin non sicuro può rappresentare una vulnerabilità per l’intero sito web. Il principio fondamentale da seguire è: non fidarsi mai degli input forniti dagli utenti. Tutti i dati provenienti dagli utenti o da fonti esterne devono essere verificati, puliti o “evasi” (cioè modificati in modo da eliminare eventuali potenziali pericoli) prima di essere inseriti nel database, nel file system o visualizzati sulle pagine web.
Verifica e pulizia dei dati
La verifica consiste nel controllare se i dati inseriti corrispondono al formato previsto: ad esempio, se si tratta di un indirizzo email, di numeri o se rientrano in un determinato intervallo. WordPress mette a disposizione una serie di funzioni di aiuto per questo scopo. is_email(), absint()La pulizia consiste nel rimuovere, sulla base della verifica, qualsiasi carattere illegale o non sicuro dai dati. Per i campi di testo, è possibile utilizzare… sanitize_text_field()。
// 在处理表单提交时
$user_input = $_POST['some_field'] ?? ''; // 使用空合并运算符避免未定义索引警告
// 清理输入
$clean_input = sanitize_text_field( $user_input );
// 验证是否是正整数
$clean_id = absint( $_POST['post_id'] );
if ( $clean_id <= 0 ) {
// 处理无效ID的错误
} La fuga dei dati prima dell'output.
L’escapamento è il processo che consente di garantire che i dati vengano visualizzati in modo sicuro in contesti diversi (ad esempio HTML, JavaScript, URL). È fondamentale per prevenire gli attacchi di tipo Cross-Site Scripting (XSS). WordPress offre funzioni di escapamento molto potenti:
* esc_html()“:” viene utilizzato per escapare il contenuto HTML, impedendo che i tag HTML presenti vengano interpretati dal sistema.
* esc_attr(): I valori degli attributi utilizzati per l'evasione dei tag HTML.
* esc_url()“:” viene utilizzato per escapare i caratteri presenti all’interno di un URL.
* wp_kses_post()È possibile generare in modo sicuro una parte dell’HTML utilizzando un insieme di regole definite.
// 在设置页面或前端输出用户数据时
echo '<div class="notice">'`. esc_html($clean_input)`.'</div>';
echo '<input type="hidden" value="' . esc_attr( $clean_input ) . '">';
echo '<a href="/it/' . esc_url( $user_url ) . '/">link (su un sito web)</a>';
echo wp_kses_post( $allowed_html_content ); // 允许文章级别的HTML标签 Inoltre, quando si gestiscono le query al database, è sempre consigliabile utilizzare le classi dedicate al database fornite da WordPress. $wpdb Metodi di pre-elaborazione, oppure l’utilizzo di API più avanzate come… WP_QuerySono dotate di protezione contro le iniezioni SQL (SQL injection). Durante le operazioni su file, viene utilizzata questa protezione per garantire la sicurezza dei sistemi. wp_upload_dir()、wp_handle_upload() Utilizzare API appropriate per garantire la sicurezza dei percorsi (path security).
Utilizzare i “hook” (ganci) per ottenere un elevato livello di estensibilità.
Il cuore del sistema di plugin di WordPress è il meccanismo dei “hook” (ganci), composto da “azioni” (actions) e “filtri” (filters). I hook permettono ai plugin di modificare il comportamento di WordPress o i suoi dati senza dover modificare il codice sorgente, e consentono anche ad altri sviluppatori di estendere le funzionalità del tuo plugin.
Si consiglia di leggere Guida all’approccio di base allo sviluppo di temi per WordPress: costruisci il tuo primo tema personalizzato da zero。
L’uso e la creazione dei “action hooks”
Gli “action hooks” eseguono un frammento di codice in un punto specifico del tempo e non richiedono il ritorno di un valore. I plugin possono utilizzare i migliaia di hook interni forniti da WordPress. init, wp_enqueue_scripts, save_postÈ anche possibile creare propri “hook” (meccanismi di interazione) da utilizzare da altri sviluppatori.
Il codice montato sul gancio è il seguente:
// 在文章内容前自动添加一个横幅
function myplugin_prepend_content( $content ) {
if ( is_single() ) {
$custom_text = '<div class="myplugin-banner">Questo è un banner pubblicitario.</div>';
$content = $custom_text . $content;
}
return $content;
}
add_filter( 'the_content', 'myplugin_prepend_content' ); Attenzione: anche se abbiamo modificato il contenuto, abbiamo utilizzato gli “hook” dei filtri (filter hooks). the_contentPerché richiede di restituire il valore modificato.
Creare un hook per azioni personalizzate do_action Funzione:
// 在你的插件代码中定义一个动作点
function myplugin_complete_task() {
// ... 执行一些任务 ...
// 发出自定义动作,允许其他代码在此处添加功能
do_action( 'myplugin_after_task_complete', $task_id, $result );
} Altri plugin o temi possono essere installati tramite… add_action('myplugin_after_task_complete', 'callback', 10, 2) Rispondi a questa azione.
Principio e esempi degli hook dei filtri
Gli “hook” dei filtri vengono utilizzati per modificare i dati prima che vengano utilizzati. Accettano un valore in ingresso e devono restituire un valore modificato (o lo stesso valore iniziale). Questo rappresenta un metodo comune per i plugin per modificare il testo, le opzioni o i risultati di una query.
Utilizzare i filtri incorporati:
// 修改文章摘要的长度
function myplugin_excerpt_length( $length ) {
return 20; // 将摘要字数限制改为20字
}
add_filter( 'excerpt_length', 'myplugin_excerpt_length' ); Creare un hook per filtri personalizzati apply_filters Funzione:
function myplugin_get_price( $product_id ) {
$base_price = get_post_meta( $product_id, 'price', true );
// 应用过滤器,允许其他代码动态修改价格(例如添加税费、折扣)
$final_price = apply_filters( 'myplugin_product_price', $base_price, $product_id );
return $final_price;
} In questo modo, il tuo plugin fornisce un’interfaccia flessibile che permette ad altri sviluppatori di modificare facilmente la logica di calcolo dei prezzi, senza dover modificare direttamente il codice sorgente del plugin stesso.
Internazionalizzazione di plugin e gestione delle risorse di script
Un plugin WordPress maturo dovrebbe supportare l’internazionalizzazione, in modo da poter essere tradotto in diverse lingue, e gestire in modo appropriato i file CSS e JavaScript sia del lato front-end che del lato back-end.
Realizzare l'internazionalizzazione del plug-in.
L’internazionalizzazione viene realizzata utilizzando funzioni specifiche per incapsulare tutte le stringhe di testo da tradurre. Questo processo prevede due fasi principali: il caricamento dei file di traduzione tramite campi di testo, e la marcatura delle stringhe da tradurre all’interno del codice.
Innanzitutto, definisci ciò che è stato definito nella parte iniziale del file principale del plugin. Text Domain(Ad esempio, my-first-pluginQuello è il tuo campo di testo. Poi, durante l’inizializzazione del plugin (di solito…) init “Gancio”) per l’utilizzo. load_plugin_textdomain Una funzione per caricare i file di traduzione.
function myplugin_load_textdomain() {
load_plugin_textdomain(
'my-first-plugin', // 文本域,必须与文件头一致
false, // 已弃用参数
dirname( plugin_basename( __FILE__ ) ) . '/languages' // 语言文件存放的相对路径
);
}
add_action( 'init', 'myplugin_load_textdomain' ); Nel codice, utilizzare… __() Traduci e restituisci la stringa, utilizzando _e() Traduci e restituisci direttamente la stringa.
$settings_title = __( 'My Plugin Settings', 'my-first-plugin' );
_e( 'Hello World!', 'my-first-plugin' ); Gli sviluppatori possono utilizzarlo. Poedit Strumenti come questi estraggono queste stringhe dal codice sorgente e le utilizzano per generare… .pot File di template. .po 和 .mo Il file è archiviato all’interno del plugin. /languages/ All’interno della directory.
Introdurre correttamente CSS e JavaScript
Non codificare mai direttamente i valori nei file PHP. <link> 或 <script> I tag vengono utilizzati per introdurre risorse nel codice. WordPress fornisce un sistema unificato di gestione delle risorse, chiamato “enqueue”, che permette di gestire le dipendenze tra le risorse, il controllo delle versioni e il momento in cui queste vanno caricate.
Per quanto riguarda le risorse del backend, utilizzare… admin_enqueue_scripts Gancio.
function myplugin_admin_scripts( $hook ) {
// 只在特定插件设置页面加载
if ( $hook != 'toplevel_page_myplugin-settings' ) {
return;
}
wp_enqueue_style(
'myplugin-admin-style', // 句柄
plugins_url( 'css/admin-style.css', __FILE__ ), // 文件URL
array(), // 依赖
'1.0.0' // 版本号,可用于强制浏览器更新缓存
);
wp_enqueue_script(
'myplugin-admin-script',
plugins_url( 'js/admin-script.js', __FILE__ ),
array( 'jquery' ), // 依赖jQuery
'1.0.0',
true // 在页脚加载
);
}
add_action( 'admin_enqueue_scripts', 'myplugin_admin_scripts' ); Per i risorse front-end, utilizzare… wp_enqueue_scripts Gli “hook” (ganci) funzionano in modo simile: garantiscono un caricamento ordinato dei risorse, evitano conflitti e permettono di sfruttare la cache del browser.
Riassumendo
Lo sviluppo di plugin per WordPress rappresenta un processo sistematico che inizia dalla creazione di un file principale conforme agli standard, e comprende aspetti diversi come la costruzione dell’interfaccia di back-end, la gestione della sicurezza dei dati, l’utilizzo dei “hook” del core del sistema e il supporto all’internazionalizzazione. Seguire le migliori pratiche, in particolare le norme rigorose per la sicurezza dei dati e una comprensione approfondita del meccanismo dei “hook”, è fondamentale per sviluppare plugin di livello commerciale stabili, sicuri ed estensibili. L’uso appropriato dell’API di configurazione e delle risorse relative agli script di gestione permette di migliorare notevolmente la professionalità del plugin e l’esperienza di utilizzo da parte degli utenti. Gli sviluppatori dovrebbero sempre prevedere la possibilità di tradurre il codice, al fine di ampliare l’ambito di applicazione del plugin.
FAQ - Domande frequenti
Quali elementi deve contenere il plugin più semplice per WordPress?
Il plugin più semplice richiede soltanto un file PHP, il quale deve contenere le note di intestazione standard per i plugin. La riga di annotazione più importante è quella che indica il “Nome del Plugin”. All’interno di questo file è possibile scrivere direttamente il codice PHP oppure aggiungere funzionalità tramite degli “hook”.
Ad esempio, un plugin che contiene soltanto un breve codice in grado di produrre l’output “Hello World” richiede anch’esso un file di questo tipo per funzionare correttamente.
Come interagiscono i plugin con il database di WordPress?
Si consiglia di utilizzare le classi per l’operazione sui database integrate in WordPress. $wpdbFornisce metodi sicuri per l’interrogazione dei dati, in particolare… prepare Questo metodo può prevenire efficacemente gli attacchi di iniezione SQL.
Per la maggior parte delle operazioni su dati (come l’acquisizione di articoli o la modifica dei metadati), si consiglia di utilizzare le funzioni avanzate offerte da WordPress. get_posts(), WP_Query, get_post_meta(), update_post_meta() Queste funzioni hanno già gestito in modo appropriato i problemi di sicurezza e di caching a livello di base. Per le strutture di dati personalizzate, gli sviluppatori possono creare tabelle di dati personalizzate all’attivazione del plugin.
Dove posso trovare tutti gli action e i filter hook disponibili?
I documenti ufficiali di sviluppo di WordPress rappresentano la migliore risorsa per trovare i “hook” (punti di interazione tra plugin e funzionalità di base del sito). Inoltre, gli sviluppatori possono anche cercare i hook direttamente nel codice sorgente del nucleo di WordPress.
Apri il directory radice di WordPress nel tuo editor di codice e effettua una ricerca. do_action 或 apply_filters Per le chiamate di funzione, è possibile trovare tutti gli hook definiti e i loro parametri. Molti materiali di riferimento online forniscono anche elenchi di hook più comuni.
Come debuggare il codice del mio plugin per WordPress?
Prima di tutto, assicurati che nel tuo… wp-config.php Il debug mode è attivo nel file: define( 'WP_DEBUG', true );Questo consentirà di visualizzare gli errori e gli avvisi di PHP. Per evitare che i messaggi di errore siano visibili ai visitatori, è possibile impostare anche altre configurazioni in modo da nasconderli. define( 'WP_DEBUG_DISPLAY', false ); E registrare gli errori in un file di log:define( 'WP_DEBUG_LOG', true );。
In secondo luogo, utilizzare error_log() La funzione registra informazioni di debug personalizzate in un file di log. Per strutture di dati complesse (come array, oggetti), è possibile utilizzare tecniche combinate per garantire una registrazione completa e accurata dei dati. print_r() 或 var_dump() Eseguire l’output, ma assicurarsi che sia visibile solo dopo l’accesso con le credenziali di amministratore per evitare la perdita di informazioni. L’utilizzo di strumenti di debug PHP professionali, come Xdebug, permette di effettuare il debug con punti di interruzione e il tracciamento dello stack in modo più efficiente.
Il prossimo passo, cosa dovremo fare dopo?
Per una lettura approfondita e conoscenza pratica
I seguenti contenuti sono correlati all'argomento di questo articolo e sono adatti per una lettura approfondita. È consigliabile iniziare con l'articolo più vicino al tuo problema attuale, per poi passare gradualmente agli argomenti correlati, il che di solito dà risultati migliori.
- Analisi approfondita di WooCommerce: costruire da zero un potente sito di e-commerce per WordPress
- Guida completa all’ottimizzazione delle prestazioni di WordPress: velocizzazioni su tutti i fronti, dal codice sorgente al frontend.
- Come installare e configurare un certificato SSL per il tuo sito web WordPress?
- Guida all’ottimizzazione della cache su tutto il sito con WooCommerce: per aumentare la velocità e le conversioni dei siti di e-commerce basati su WordPress
- Guida definitiva all’installazione di WooCommerce e alla scelta dei temi per il 2026