Menguasai pembangunan plugin WordPress: Membina plugin kustom pertama anda dari awal hingga akhir.

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

Mengapa memilih pembangunan plugin untuk WordPress?

WordPress, sebagai sistem pengurusan kandungan yang paling popular di dunia, keupayaannya untuk diperluas (scalability) adalah terutamanya disebabkan oleh plugin. Dengan mengembangkan plugin khusus, anda boleh menambahkan ciri-ciri unik kepada platform asas untuk memenuhi keperluan perniagaan tertentu, tanpa perlu mengubah fail tema. Ini memastikan bahawa kod fungsi anda tidak akan hilang apabila tema diperbaharui, dan juga membolehkan modul fungsi tersebut digunakan semula pada laman web yang berbeza.

Mempelajari pengembangan plugin tidak hanya membolehkan anda mencipta produk yang boleh digunakan oleh orang lain, tetapi juga membolehkan anda memahami dengan lebih mendalam cara WordPress berfungsi, termasuk sistem hook-nya, interaksi dengan pangkalan data, dan amalan terbaik keselamatan. Ini merupakan langkah penting dalam perjalanan seorang pengguna biasa menjadi seorang pengembang yang berpengalaman.

Membina plugin pertama anda

Sebelum mula menulis kod, anda perlu membangunkan persekitaran WordPress yang standard pada komputer lokal atau pelayan ujian. Ini merupakan asas untuk semua kerja pembangunan.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Belajar mengembangkan plugin WordPress dari awal: Bina fungsi khusus pertama anda

Buat fail plugin utama

Setiap plugin WordPress mesti mempunyai satu fail utama, yang biasanya dinamakan sama dengan nama plugin tersebut. Kita akan membuat satu fail yang bernama…my-first-pluginPlugin tersebut. Pertama sekali, dalam direktori pemasangan WordPress anda…/wp-content/plugins/Dalam folder tersebut, buatlah sebuah folder baru dan berikan nama ia sebagai…my-first-plugin

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.

Dalam folder tersebut, buat satu fail dengan namamy-first-plugin.phpFail PHP tersebut merupakan titik masuk untuk plugin. Buka fail tersebut dan tambahkan ulasan kepala plugin berikut; maklumat ini sangat penting bagi WordPress untuk mengenali plugin anda.

<?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
 */

Melaksanakan fungsi pertama yang mudah

Satu ciri klasik untuk pemula adalah: menambahkan secara automatik segmen teks di bahagian bawah semua kandungan artikel di laman web. Kita akan menggunakan WordPress untuk melakukannya. the_content Ia dilaksanakan menggunakan “filter hooks”. Di bawah ulasan pada bahagian atas fail utama anda, tambahkan fungsi berikut:

// 防止直接访问文件
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>Terima kasih kerana membaca! Artikel ini disediakan oleh “My First Plugin” untuk anda.</em></p></div>';
        return $content . $custom_text;
    }
    return $content;
}
// 将函数挂载到 `the_content` 过滤器上
add_filter( 'the_content', 'mfp_add_footer_text' );

Kod ini mendefinisikan sebuah fungsi. mfp_add_footer_textIa menerima kandungan artikel. $content Sebagai parameter, fungsi tersebut akan terlebih dahulu memeriksa sama ada persekitaran semasa berada pada halaman artikel tunggal, gelung utama (main loop), atau kueri utama (main query). Ini dilakukan untuk mengelakkan teks daripada ditambahkan pada bahagian ringkasan (summary), alat tambahan (tools), atau tempat lain. Jika syarat-syarat tersebut dipenuhi, fungsi tersebut akan membuat segmen teks HTML yang khusus, dan menambahkannya di belakang kandungan asal.

Mengkaji secara mendalam arkitektur dan keselamatan plugin

Seiring dengan peningkatan fungsi tambahan (plugins), pengurusan kod yang baik menjadi sangat penting. Pada masa yang sama, keselamatan merupakan aspek utama dalam pembangunan WordPress.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Menguasai pembangunan plugin WordPress: Membina modul fungsi tambahan pertama anda dari awal hingga akhir.

Menggunakan pengaturcaraan berorientasikan objek untuk merekabentuk semula kod

Untuk meningkatkan kemudahan penyelenggaraan dan keupayaan pengembangan kod, penggunaan pendekatan berorientasikan objek (Object-Oriented Programming/OOP) disyorkan dalam mengatur plugin. Kami akan membina semula fungsi-fungsi yang telah dinyatakan di atas menjadi sebuah kelas.

// 防止直接访问文件
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();

Sila ambil perhatian, kami sedang… add_footer_to_content Metode tersebut menggunakan… esc_html__() Fungsi ini digunakan untuk membungkus teks. Ia merupakan fungsi terjemahan yang juga melakukan pengelakan karakter dengan betul pada output, yang merupakan amalan terbaik untuk menghasilkan teks yang selamat. Kami juga telah menambahkan kaedah untuk memuatkan fail gaya (style sheet) dan menyokong bidang teks (text fields), yang mempersiapkan sistem untuk penggunaan bahasa antarabangsa (i18n) dalam plugin.

Mengerti dan melaksanakan pengesahan data serta proses pengelakkan karakter berbahaya (escaping)

Jangan pernah mempercayai data yang dimasukkan oleh pengguna atau data dari sumber luar. Semasa menerima, memproses, dan mengeluarkan data, anda mesti melakukan pengesahan, pembersihan, dan proses “escaping” (pengubahsuaian untuk mengelakkan masalah keselamatan). Sebagai contoh, jika anda ingin membuat halaman pengurusan yang mempunyai borang input, pastikan anda menggunakan fungsi-fungsi yang disediakan oleh WordPress yang tidak membenarkan penggunaan kod yang berbahaya (seperti kod “ce”), memeriksa hak akses pengguna, dan melakukan pengesahan data.

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

Fungsi plugin ini agak ringkas, tetapi kami telah menggunakannya semasa menghasilkan kod HTML. esc_html__() Lakukan pengekstrakan (escape). Jika plugin perlu memproses data yang dihantar oleh pengguna, seperti melalui borang, maka penggunaan mekanisme pengekstrakan adalah wajib. sanitize_text_field(), wp_kses_post() Gunakan fungsi-fungsi yang sesuai untuk membersihkan data, dan kemudian gunakannya. wp_verify_nonce() Untuk mengesahkan kesahihan permintaan tersebut.

Create a plugin management page.

Sebuah plugin yang matang biasanya memerlukan halaman konfigurasi di bahagian belakang (backend). Kita akan belajar bagaimana menggunakan API tetapan WordPress untuk membuat halaman pengurusan yang ringkas dan standard.

Tambahkan menu tetapan plugin

Pertama sekali, kita perlu menambahkan halaman sub-menu di bawah menu “Settings” di bahagian belakang WordPress. Tambahkan kaedah baru dalam kelas anda, dan laksanakannya dalam fungsi pembinaan (constructor) dengan menggunakan kod yang sesuai. add_action('admin_menu', ...) Hook memanggilnya.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan untuk pemula dalam pembangunan plugin WordPress: Membina plugin pertama anda dari awal.

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

Kemudian, tambahkan kod berikut dalam fungsi pembina (constructor):add_action( 'admin_menu', array( $this, 'register_admin_menu' ) );

Membina halaman tetapan dan bidang

Seterusnya, kita perlu mendefinisikan… display_settings_page Kaedah ini digunakan untuk merender kandungan HTML halaman tetapan, dan menggunakan API tetapan untuk mendaftarkan satu bidang tetapan.

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

Anda perlu mentakrifkan (define) sesuatu. render_footer_field Cara untuk merender kotak masukan sebenar (input field) dan mengemas kini kandungan yang ada sebelumnya… add_footer_to_content Cara untuk membuatnya tersedia daripada pilihan pangkalan data get_option('mfp_footer_text') Baca teks daripada sumber tertentu, bukan menggunakan rentetan yang dikodkan secara tetap (hard-coded strings). Akhir sekali, tambahkan kod berikut dalam fungsi pembina (constructor):add_action( 'admin_init', array( $this, 'initialize_settings' ) );

RINGKASAN

Melalui perjalanan dalam artikel ini, anda telah membina sebuah plugin WordPress yang lengkap sepenuhnya dari awal. Anda telah belajar cara membuat struktur asas sebuah plugin, menggunakan action dan filter hooks untuk memperluas fungsi WordPress, mengatur kod secara berorientasikan objek untuk meningkatkan kualiti, mengikuti amalan terbaik keselamatan untuk mengesahkan dan mengekstrip data, serta menggunakan API pengaturan WordPress untuk mencipta antara muka pengurusan belakang yang profesional.

Inti pembangunan plugin adalah pemahaman terhadap sistem “hook” dan aliran data (data flow) dalam WordPress. Teruskan berlatih, bermula dengan fungsi yang mudah, kemudian perlahan-lahan meningkatkan kerumitannya, dan sentiasa utamakan aspek keselamatan, prestasi, dan kemudahan penyelenggaraan. Dengan pengumpulan pengalaman, anda akan mampu mengembangkan plugin WordPress yang kuat, profesional, dan popular.

FAQ - Soalan Lazim

Apa pengetahuan asas yang diperlukan untuk membangunkan plugin WordPress?

Anda perlu memiliki pengetahuan pengaturcaraan PHP yang kukuh, kerana plugin tersebut kebanyakannya ditulis dalam PHP. Pemahaman asas tentang HTML, CSS, dan JavaScript juga diperlukan, kerana anda perlu menguruskan penampilan dan interaksi pada bahagian hadapan (front end). Yang paling penting, anda perlu biasa dengan konsep-konsep asas WordPress, seperti “hooks” (actions dan filters), pengulangan (loops), hierarki templat, serta operasi pangkalan data (melalui kelas seperti WP_Query dan WP_User_Query).

Bagaimana untuk membaiki masalah (debug) dan menguji (test) plugin saya?

Pertama sekali, sangat disyorkan untuk melakukan pembangunan dalam persekitaran pembangunan tempatan (seperti Local by Flywheel, XAMPP) atau pada laman ujian dalam talian, untuk mengelakkan kesan negatif terhadap laman web produksi. Aktifkan mod pembangunan (debug mode) dalam WordPress.wp-config.phpTetapan dalam faildefine( 'WP_DEBUG', true );Ini akan memaparkan ralat dan amaran PHP pada skrin. Gunakanerror_log()Fungsi tersebut akan merekod maklumat pembetulan (debugging information) yang disesuaikan ke dalam log ralat (error log) pada pelayan. Untuk pembetulan yang lebih kompleks, anda boleh mempertimbangkan untuk menggunakan alat pembetulan profesional seperti Query Monitor atau Debug Bar.

Bagaimanakah plugin saya dapat bersesuaian dengan pelbagai versi WordPress?

Semasa proses pembangunan, perhatian harus diberikan kepada notis berkaitan fungsi-fungsi yang telah diabaikan (deprecated) yang terdapat dalam dokumen rasmi WordPress. Elakkan menggunakan fungsi-fungsi yang telah ditandai sebagai “deprecated”. Dalam fail utama plugin, ini boleh dilakukan dengan…Requires at leastTested up toMaklumat kepala digunakan untuk menyatakan versi WordPress yang serasi dengan plugin anda. Uji plugin anda secara berkala pada versi WordPress yang lebih baru, dan perhatikan log kemas kini teras (core updates) untuk membuat penyesuaian pada kod dengan segera.

Bagaimana untuk mengeluarkan plugin saya ke direktori plugin rasmi WordPress?

Pertama sekali, anda perlu memastikan bahawa plugin anda memenuhi sepenuhnya garis panduan pembangunan plugin rasmi dan panduan penghantaran. Ini termasuk kualiti kod, keselamatan, perjanjian lesen (mesti GPLv2 atau versi yang lebih tinggi), dan sebagainya. Kemudian, daftarkan sebuah repositori SVN di WordPress.org. Hantar kod plugin anda ke repositori SVN tersebut.trunkDalam direktori tersebut, buatlah fail yang sesuai.readme.txtFail tersebut perlu menggunakan format yang ditentukan. Setelah diluluskan, plugin anda akan dipaparkan dalam direktori rasmi.