Memulakan dari awal: Membina plugin WordPress pertama anda

Bacaan 3 minit
2026-03-13
2026-06-04
2,843
Saya mendapat komisen apabila anda membeli-belah melalui pautan di bawah, tanpa sebarang kos tambahan kepada anda.

Pra-persiapan sebelum pembangunan

Sebelum mula menulis kod, kita perlu memastikan bahawa persekitaran pembangunan telah disediakan dengan betul dan memahami struktur asas sebuah plugin WordPress. Sebuah persekitaran pembangunan tempatan yang sesuai merupakan asas untuk bekerja dengan cekap.

Membina persekitaran pembangunan tempatan.

Pertama sekali, anda memerlukan persekitaran pelayan tempatan untuk menjalankan WordPress. Alat terintegrasi seperti XAMPP, MAMP, atau Local by Flywheel disyorkan. Setelah WordPress dipasang, anda boleh… wp-content/plugins Mulakan pembangunan plugin anda dalam direktori tersebut. Direktori ini merupakan tempat penyimpanan semua plugin, sama ada yang anda bangunkan sendiri atau yang dipasang dari direktori rasmi.

Mengerti fail-fail inti plugin

Setiap plugin WordPress memerlukan sekurang-kurangnya satu fail utama, yang berfungsi sebagai “kad pengenalan” dan “pengaktif” plugin tersebut. Fail ini biasanya dinamakan berdasarkan fungsi utama plugin tersebut. my-first-plugin.phpBlok komen di bahagian atas fail utama ini sangat penting, kerana ia menerangkan maklumat asas tentang plugin ini kepada sistem WordPress.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Pembangunan Plugin WordPress: Dari Pemulaan Hingga Ke Mahiran: Panduan Langsung Untuk Membina Plugin Custom Pertama Anda

Cipta fail plugin pertama anda.

Sekarang, mari kita mulakan dengan bahagian yang paling asas dan membuat sebuah plugin yang ringkas tetapi mempunyai fungsi yang sebenar.

UltaHost – Penyedia Hosting untuk WordPress
Jaminan pemulangan wang dalam tempoh 30 hari, lebar jalur dan pangkalan data yang tidak terhad, perlindungan DDoS percuma, diskaun 50% untuk pembelian selama 3 tahun.

Menulis ulasan kepala untuk plugin

wp-content/plugins Dalam direktori tersebut, buat satu fail dengan nama… my-first-plugin Cipta sebuah folder baru. Kemudian, dalam folder tersebut, buat fail utama. my-first-plugin.phpDi bahagian atas fail ini, anda perlu menambahkan komen kepala maklumat plugin yang mematuhi standard WordPress.

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

Kod ini memberitahu WordPress bahawa ini adalah sebuah plugin, dan ia mendefinisikan nama, deskripsi, versi, serta maklumat lain yang akan dipaparkan di antara muka pentadbiran WordPress. Setelah menyimpan fail tersebut, anda boleh log masuk ke pentadbiran WordPress dan pergi ke halaman “Plugins” (Perkakasan). Plugin anda sepatutnya akan muncul dalam senarai tersebut. Kini anda boleh mengaktifkannya, walaupun pada masa ini ia tidak mempunyai sebarang fungsi.

Laksanakan satu fungsi asas: mengfilter kandungan artikel.

Setelah mengaktifkan plugin tersebut, kita perlu memastikannya melakukan sesuatu. Salah satu fungsi asas yang sering digunakan ialah mengubah kandungan artikel. Kita akan menggunakannya untuk tujuan tersebut. the_content Penyaring ini akan menambahkan segmen teks yang disesuaikan secara automatik di akhir setiap artikel.

Dalam fail utama my-first-plugin.php Di bawah ulasan kepala (header comment), kita menambahkan kod fungsi:

Diperoleh daripada WEB\nDisyorkan untuk membaca. Cara Membuat Tema WordPress yang Profesional: Panduan Lengkap Dari Awal Hingga Siap Digunakan

// 在文章内容末尾添加自定义文本
function myfp_add_custom_text_to_content( $content ) {
    // 确保只在主循环的单篇文章页面添加
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = '<p><strong>Terima kasih atas pembacaan! Artikel ini disokong oleh “My First Plugin”.</strong></p>';
        $content .= $custom_text;
    }
    return $content;
}
// 将我们的函数挂载到 ‘the_content’ 过滤器上
add_filter( 'the_content', 'myfp_add_custom_text_to_content' );

Kod ini mendefinisikan sesuatu yang dinamakan… myfp_add_custom_text_to_content Fungsi tersebut menerima kandungan artikel sebagai input. $content Sebagai parameter, perlu menggunakan penilaian keadaan (condition judgment) untuk memastikan bahawa teks hanya ditambahkan pada halaman artikel tunggal di bahagian depan laman web, dan mengelakkan ia daripada berkesan pada halaman lain (seperti halaman senarai). Kemudian, segmen HTML yang disesuaikan akan ditambahkan di belakang kandungan asal, dan kandungan yang telah diubahsuai akan dikembalikan. Akhirnya, gunakan… add_filter() Fungsi tersebut akan “memuatkan” fungsi khusus yang dibangunkan sendiri ini ke dalam kod teras WordPress. the_content Ia terletak pada penapis (filter). Dengan cara ini, setiap kali WordPress bersedia untuk mengeluarkan kandungan artikel, fungsi kita akan dijalankan terlebih dahulu.

Setelah menyimpan fail tersebut, pergi ke laman web utama dan lihat mana-mana artikel. Anda akan mendapati bahawa teks ucapan terima kasih yang kami tambahkan telah muncul di bahagian bawah halaman.

Tambahkan pilihan pengurusan untuk plugin.

Sebuah plugin yang lengkap dengan ciri-ciri yang baik biasanya memerlukan beberapa pilihan konfigurasi, yang membenarkan pengguna untuk membuat tetapan di latar belakang. Kita akan menambahkan halaman tetapan untuk fungsi “Teks Khusus” yang baru sahaja dibincangkan.

hosting.com Hosting Bersama
Prestasi tinggi, menampilkan CPU AMD EPYC, storan SSD NVMe dan LiteSpeed, dengan sokongan pakar dalaman 24/7, langkah keselamatan canggih termasuk SSL, perlindungan serangan paksa kata laluan, perisian hasad dan DDoS, menjimatkan sehingga 73%.

Create a plugin management menu

Pertama sekali, kita perlu menambahkan item menu baru ke dalam bar sisi pentadbiran di latar belakang WordPress. Ini memerlukan penggunaan ciri-ciri yang tersedia dalam WordPress. add_action() Fungsi dan admin_menu Kuku.

// 添加管理菜单
function myfp_add_admin_menu() {
    add_options_page(
        '我的第一个插件设置', // 页面标题
        '我的插件设置',       // 菜单标题
        'manage_options',    // 权限要求
        'my-first-plugin',   // 菜单 slug
        'myfp_options_page_html' // 显示设置页面的回调函数
    );
}
add_action( ‘admin_menu’, ‘myfp_add_admin_menu’ );

add_options_page() Fungsi tersebut akan membuat satu item sub-menu di bawah menu utama “Setelan”. Ia memerlukan beberapa parameter: tajuk halaman, tajuk menu, kebenaran pengguna, pengekod unik menu (slug), dan nama fungsi panggilan balik (callback function) yang digunakan untuk menghasilkan kandungan HTML halaman setelan. myfp_options_page_html

Membina halaman tetapan dan menyimpan data

Seterusnya, kita perlu mendefinisikan fungsi panggilan balik (callback function) untuk merender halaman tetapan dan memproses data yang dihantar oleh pengguna.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Tutorial pembangunan plugin WordPress: Membina plugin pertama anda dari awal hingga akhir.

// 渲染设置页面的HTML
function myfp_options_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="/ms/“options.php”/" method="“post”" data-trp-original-action="“options.php”">
            <?php
            // 输出必要的安全字段
            settings_fields( ‘myfp_settings’ );
            // 输出设置区域
            do_settings_sections( ‘my-first-plugin’ );
            // 输出提交按钮
            submit_button( ‘保存设置’ );
            ?>
        <input type="hidden" name="trp-form-language" value="ms"/></form>
    </div>
    ‘myfp_field_custom_text’ ]
    );
}
add_action( ‘admin_init’, ‘myfp_settings_init’ );

// 渲染文本框的HTML
function myfp_field_custom_text_html() {
    // 从数据库获取已保存的值
    $options = get_option( ‘myfp_options’ );
    $value = $options[‘myfp_field_custom_text’] ?? ‘’; // 使用空合并运算符,如果不存在则赋空值
    ?&gt;
    <input type="“text”"
           id="“myfp_field_custom_text”"
           name="“myfp_options[myfp_field_custom_text]”"
           value="“NO NUMERIC NOISE KEY" 1000”
 class="“regular-text”">
    &lt;?php
}

Kod ini berfungsi dengan… register_settingadd_settings_sectionadd_settings_field Sebuah siri fungsi telah digunakan untuk membuat halaman tetapan yang mengandungi kotak masukan teks, dengan mematuhi spesifikasi API Tetapan (Settings API) WordPress. Kandungan yang dimasukkan oleh pengguna akan disimpan dengan selamat. wp_options data table myfp_options Dalam rekod.

Akhirnya, kita perlu mengubah fungsi yang digunakan untuk memfilter kandungan artikel sebelum ini, supaya ia menggunakan teks yang diperoleh dari pangkalan data, bukan teks yang dikodkan secara tetap (hardcoded).

Hosting Bersama InterServer
Hosting kongsi: 1TB/bulan pada $2.50 USD, bulan pertama pada $0.10 USD dengan kod promo tryinterserver. 461 skrip aplikasi awan tersedia untuk pemasangan satu klik.
function myfp_add_custom_text_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $options = get_option( ‘myfp_options’ );
        $custom_text = $options[‘myfp_field_custom_text’] ?? ‘’;
        if ( ! empty( $custom_text ) ) {
            $content .= ‘<p><strong>’. esc_html($custom_text)‘. ‘</strong></p>’;
        }
    }
    return $content;
}

Sekarang, pengguna boleh memasukkan sebarang teks pada halaman “Setelan” -> “Setelan Plugin Saya”. Setelah disimpan, teks tersebut akan dipaparkan di akhir setiap artikel di laman web.

Amalan Lanjutan dalam Pembangunan Plugin dan Persiapan Pengeluaran

Setelah fungsi asas selesai dibangunkan, kita perlu mempertimbangkan kekuatan (robustness), kebolehjagaan (maintainability) plugin tersebut, serta cara untuk berkongsi plugin tersebut dengan orang lain.

Menambahkan sokongan keselamatan dan internasionalisasi

Keselamatan adalah perkara yang paling penting dalam pembangunan plugin. Dalam contoh di atas, kita sudah menggunakannya. esc_html()esc_attr() Gunakan fungsi-fungsi yang disediakan oleh WordPress untuk mengekstrak kandungan yang dihasilkan, bagi mencegah serangan XSS. Semasa memproses input pengguna, menjalankan pertanyaan pangkalan data, atau memuatkan fail luaran, anda mesti sentiasa menggunakan fungsi keselamatan yang disediakan oleh WordPress. wpdb->prepare()sanitize_text_field()check_admin_referer() dan sebagainya.

Selain itu, untuk membolehkan plugin digunakan oleh pengguna di seluruh dunia, internationalisasi (i18n) adalah penting. Kita perlu mengelilingi semua teks yang ditujukan untuk pengguna dalam plugin dengan fungsi terjemahan WordPress. Ini memerlukan pengubahsuaian pada kod yang telah kita buat sebelum ini.

1. Telah dinyatakan dalam ulasan di bahagian atas plugin. Text Domain: my-first-plugin
2. Muatkan kawasan teks (text field). Biasanya, tambahkannya di bahagian bawah fail utama:add_action( ‘plugins_loaded’, function() { load_plugin_textdomain( ‘my-first-plugin’, false, dirname( plugin_basename( FILE ) ) . ‘/languages/’ ); } );
3. String pengepakan. Sebagai contoh, ubah tajuk kawasan tetapan kepada ( ‘自定义文本设置’, ‘my-first-plugin’ )Ubah tajuk menu kepada ( ‘我的插件设置’, ‘my-first-plugin’ )Dengan cara ini, penterjemah dapat melakukannya melalui… .po/.mo Fail tersebut menyediakan versi bahasa lain untuk ayat-ayat tersebut.

Menyiapkan plugin untuk diterbitkan dalam direktori rasmi

Jika anda ingin menghantar plugin anda ke direktori plugin rasmi WordPress.org, anda perlu mengikuti satu siri garis panduan:
1. Piawaian Kod: Patuhi standard pengaturcaraan WordPress.
2. Struktur fail: Selain daripada fail utama, biasanya diperlukan juga… README.txt(Deskripsi plugin, yang digunakan untuk halaman direktori)uninstall.php(Pembersihan kerja semasa proses membuang plugin), dan lain-lain.
3. Repositori SVN: Direktori rasmi menggunakan Subversion (SVN) untuk pengurusan versi. Anda perlu menghantar kod plugin anda ke repositori SVN yang ditentukan.
4. Metadata:README.txt Perlu ditulis mengikut format tertentu, termasuk nama plugin, deskripsi, kaedah pemasangan, soalan yang sering diajukan, log kemas kini, dan lain-lain.

RINGKASAN

Melalui tutorial ini, anda telah melalui keseluruhan kitaran pembangunan sebuah plugin WordPress: daripada membuat fail pertama, menulis ulasan di bahagian kepala (header), menggunakan hook tindakan (action hooks) dan hook penapis (filter hooks) untuk melaksanakan fungsi asas, hingga menambahkan halaman tetapan yang boleh disesuaikan untuk plugin tersebut, dan akhirnya mempelajari konsep-konsep lanjutan seperti keselamatan, penyesuaian untuk pengguna dari pelbagai bahasa (internationalization), serta persiapan untuk mengeluarkan plugin ke web. Plugin yang ditambahkan pada akhir artikel ini, yang membolehkan penambahan teks khusus, walaupun kelihatan ringkas, sebenarnya meliputi konsep dan proses pembangunan plugin yang paling asas. Setelah menguasai asas-asas ini, anda boleh membina plugin yang lebih kuat dan kompleks dengan meneroka sistem hook yang luas di WordPress, kod pendek (shortcodes), jenis artikel khusus (custom post types/CPT), dan REST API. Ingatlah, amalan adalah cara terbaik untuk belajar; cuba mengubah kod dan menambahkan fungsi baru adalah kunci untuk mengukuhkan pengetahuan anda.

FAQ - Soalan Lazim

Apa nama fail utama plugin itu harus dipanggil?

Tidak ada keperluan wajib untuk menamakan fail utama plugin, namun ia mesti bermula dengan… .php Akhir. Biasanya, untuk kejelasan dan unikannya, kita menggunakan nama yang sama dengan nama folder plugin atau nama yang dapat menggambarkan fungsi plugin tersebut. Contohnya: my-awesome-plugin.phpWordPress mengenal pasti plugin dengan membaca blok ulasan khusus di bahagian atas fail tersebut.

Mengapa plugin saya tidak dipaparkan dalam menu latar belakang?

Ini biasanya disebabkan oleh beberapa faktor. Pertama, sila periksa sama ada plugin tersebut telah diaktifkan dengan berjaya. Kedua, periksa… add_menu_page() Atau parameter hak pengguna (capability) dalam fungsi yang serupa, pastikan bahawa pengguna yang sedang log masuk memiliki hak yang diperlukan (seperti…) manage_optionsAkhir sekali, periksa sama ada fungsi anda berfungsi dengan betul. add_action(‘admin_menu’, …) Mengemaskini (mengmount). Sebarang ralat sintaks PHP boleh menyebabkan kegagalan dalam proses penginisian keseluruhan plugin.

Bagaimana untuk membaiki ralat PHP dalam plugin?

Pada peringkat pembangunan, disyorkan untuk mengaktifkan mod pembangunan (debug mode) di WordPress. Buka fail yang terletak dalam direktori akar (root directory) laman web tersebut. wp-config.php Untuk fail tersebut, pastikan bahawa pengaturan berikut telah diaktifkan:
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true ); // 将错误记录到 /wp-content/debug.log
define( ‘WP_DEBUG_DISPLAY’, false ); // 不建议在页面上显示,以免破坏布局
Dengan cara ini, mesej ralat akan direkodkan dalam fail log, yang memudahkan pengenalpastian masalah. Sebelum mengeluarkan tambahan (plugin), pastikan untuk mematikan mod pembangunan (debug mode).

Di mana data pilihan plugin disimpan?

Penggunaan plugin add_option()update_option() Data yang disimpan oleh fungsi tersebut disimpan secara lalai dalam pangkalan data WordPress. wp_options Dalam jadual (prefix jadual mungkin berbeza). Gunakan get_option() Fungsi tersebut boleh membaca data-data ini. Bagi struktur data yang lebih kompleks, kadangkala jadual pangkalan data khusus dibina, namun ini memerlukan pengendalian yang lebih berhati-hati.

Bagaimana untuk menjadikan plugin saya menyokong berbilang bahasa (internasionalisasi)?

Anda perlu menggunakan fungsi terjemahan dalam WordPress untuk mengelilingi semua teks yang ditujukan kepada pengguna. Yang paling sering digunakan adalah… __(‘字符串’, ‘text-domain’)_e(‘字符串’, ‘text-domain’)Kemudian, gunakan alat seperti Poedit untuk mengekstrak rentetan-rentetan tersebut dan menjana hasilnya. .pot Fail templat, dan buat bahasa yang sesuai (seperti…) zh_CN.po.moFail terjemahan untuk ) perlu disediakan terlebih dahulu. Setelah itu, letakkan fail bahasa tersebut dalam direktori plugin. /languages/ Berada di dalam folder tersebut, dan digunakan semasa plugin dimulakan (diproses). load_plugin_textdomain() Fungsi tersebut memuatkan kandungan tersebut.