Panduan Praktikal untuk Membangunkan Plugin WordPress: Membina Plugin Pertama Anda Daripada Nol Hingga Satu.

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

Pra-persiapan sebelum pembangunan plugin

Sebelum mula menulis kod, anda perlu membina persekitaran pembangunan yang sesuai dan memahami struktur asas sebuah plugin WordPress. Ini termasuk pemilihan persekitaran pelayan, editor teks atau persekitaran pembangunan terintegrasi (IDE), serta pemahaman yang jelas tentang organisasi fail-fail plugin.

Membina persekitaran pembangunan

Sebuah persekitaran pembangunan tempatan yang cekap sangat penting. Alat seperti XAMPP, MAMP, atau Local by Flywheel disyorkan untuk membina pelayan tempatan yang mengandungi PHP, MySQL, dan Apache/Nginx dengan cepat. Alat-alat ini dapat mensimulasikan persekitaran produksi, membolehkan anda melakukan pembangunan dan penyelidikan tanpa mempengaruhi laman web produksi. Selain itu, pilihlah editor kod yang berkuasa, seperti Visual Studio Code atau PhpStorm, yang menyediakan sokongan hebat untuk sintaks, cadangan kod, dan penyelidikan untuk PHP, HTML, JavaScript, dan CSS.

Memahami struktur asas plugin

Secara asasnya, sebuah plugin untuk WordPress merupakan satu atau lebih komponen yang terletak dalam sistem WordPress. /wp-content/plugins/ Fail-fail PHP yang terdapat dalam direktori tersebut. Setiap plugin memerlukan sekurang-kurangnya satu fail utama, dan nama fail tersebut biasanya unik, sebagai contoh: my-first-plugin.phpBahagian atas fail utama ini mengandungi sebuah ulasan khas yang dikenali sebagai “Plugin Header Information”. WordPress menggunakan maklumat ini untuk mengenal pasti dan memaparkan plugin anda dalam antara muka pengurusan latar belakang. Struktur plugin yang baik seharusnya mempertimbangkan pengaturan kod untuk fungsi yang berbeza ke dalam direktori-subdirektori yang berbeza. /includes/ Digunakan untuk menyimpan fail-fail kelas utama./js//css/ Digunakan untuk menyimpan sumber-sumber frontend (fail-fail yang digunakan oleh bahagian pengguna antara muka aplikasi)./languages/ Digunakan untuk fail yang bersifat antarabangsa (internationalized files).

Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan lengkap untuk pembangunan plugin WordPress: daripada tiada pengalaman hingga siap untuk dilancarkan.

Cipta fail plugin pertama anda.

Sekarang, mari kita mulakan dengan membuat fail inti untuk plugin pertama kita. Kita akan bermula dengan menulis maklumat kepala plugin, dan kemudian menambahkan fungsi yang mudah untuk memeriksa sama ada plugin berfungsi dengan betul atau tidak.

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 maklumat kepala untuk plugin

Fail utama plugin mesti mengandungi ulasan kepala (header comments) yang standard pada awalnya. Blok ulasan ini memberikan maklumat kepada WordPress tentang nama plugin, deskripsi, versi, penulis, dan metadata lain. Berikut adalah contoh yang paling asas:

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

Kod ini perlu diletakkan di bahagian atas fail PHP utama plugin. Simpan fail tersebut ke… /wp-content/plugins/my-first-plugin/my-first-plugin.php Selepas itu, log masuk ke halaman “Pemalam” (Plugins) di panel pentadbiran WordPress, anda sepatutnya dapat melihat sebuah pemalam baru yang bernama “My First Plugin” dan boleh mengaktifkannya. Pada masa ini, pemalam tersebut tidak mempunyai sebarang fungsi.

Melaksanakan fungsi pertama yang mudah

Setelah mengaktifkan plugin ini, kita akan melaksanakan satu fungsi klasik: menambahkan segmen teks yang disesuaikan secara automatik di akhir setiap kandungan artikel. Kita akan menggunakan... the_content Penapis. Ubah fail utama anda dan tambahkan kod berikut di bawah maklumat kepala:

/**
 * 在文章内容末尾添加自定义文本
 *
 * @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 = '<p><em>Terima kasih kerana membaca! Artikel ini disediakan untuk anda oleh [My First Plugin].</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
// 将自定义函数挂载到 ‘the_content’ 过滤器
add_filter( 'the_content', 'mfp_add_footer_text' );

Selepas menyimpan fail tersebut, anda tidak perlu memuat semula laman web (refresh) untuk mengakses mana-mana artikel di laman web tersebut. Anda akan melihat bahawa teks yang kami tambahkan telah muncul di penghujung artikel tersebut. Contoh ini menunjukkan salah satu mod pengembangan plugin WordPress yang asas: penggunaan “hooks” untuk mengintervensi proses utama WordPress.add_filter Ia adalah fungsi yang digunakan untuk menghubungkan penapis (filters). the_content Ia merupakan salah satu daripada banyak penapis yang boleh digunakan untuk mengubah kandungan.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Terakhir Pembangunan Plugin WordPress: Membina Plugin Profesional Dari Kosong

Pembangunan fungsi teras bagi plugin

Setelah memiliki pengetahuan asas, kita boleh meneroka ciri-ciri yang lebih kuat, seperti membuat halaman pengurusan dan mengatur kod ke dalam kelas. Ini akan membantu membina plugin yang lebih kompleks dan lebih mudah diselenggara.

Cipta menu pengurusan plugin dan halaman tetapan.

Banyak plugin memerlukan pilihan konfigurasi untuk pengguna. Ini biasanya dilakukan dengan menambahkan halaman menu ke bahagian pentadbiran (backend) WordPress. Berikut adalah contoh cara untuk menambahkan halaman menu utama:

/**
 * 在后台管理菜单中添加一个顶级菜单项
 */
function mfp_add_admin_menu() {
    add_menu_page(
        '我的插件设置', // 页面标题
        '我的插件',     // 菜单标题
        'manage_options', // 权限要求
        'mfp-settings-page', // 菜单 slug
        'mfp_render_settings_page', // 用于渲染页面的回调函数
        'dashicons-admin-generic', // 图标(可选)
        80 // 菜单位置(可选)
    );
}
add_action( 'admin_menu', 'mfp_add_admin_menu' );

/**
 * 渲染设置页面的回调函数
 */
function mfp_render_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
            // 输出安全隐藏字段
            settings_fields( 'mfp_settings_group' );
            // 输出设置区块
            do_settings_sections( 'mfp-settings-page' );
            // 输出保存按钮
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="ms"/></form>
    </div>
    &lt;?php
}

Kod ini menggunakan… add_menu_page Fungsi tersebut telah menambahkan satu item menu baru, dan juga telah menentukan butiran-butiran yang berkaitan dengannya. mfp_render_settings_page Fungsi tersebut digunakan untuk menjana kod HTML untuk halaman web. Untuk menambahkan bidang borang yang boleh disimpan pada halaman tersebut, anda juga perlu menggunakannya bersama-sama dengan komponen lain yang sesuai. register_setting, add_settings_sectionadd_settings_field Fungsi-fungsi seperti ini digunakan untuk mendaftar dan mendefinisikan item tetapan.

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

Menggunakan pengaturcaraan berorientasikan objek untuk mengatur kod

Untuk plugin yang mempunyai fungsi yang lebih kompleks, penggunaan pendekatan berorientasikan objek (object-oriented approach) dapat membungkus data dan fungsi dalam kelas, menjadikan struktur kod lebih jelas dan mengurangkan konflik penamaan. Berikut adalah contoh struktur kelas yang ringkas:

class MyFirstPlugin {
    /**
     * 构造方法,用于初始化钩子
     */
    public function __construct() {
        add_action( 'init', array( $this, 'init' ) );
        add_filter( 'the_content', array( $this, 'modify_content' ) );
    }

/**
     * ‘init’ 钩子的回调函数
     */
    public function init() {
        // 插件初始化代码,例如注册短代码、自定义文章类型等
        load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
    }

/**
     * 修改文章内容的回调函数
     */
    public function modify_content( $content ) {
        // 类内部实现功能逻辑
        if ( is_single() ) {
            $content .= '<p>Ini adalah kandungan yang ditambahkan oleh kaedah kelas (class method).</p>';
        }
        return $content;
    }
}
// 实例化插件类
new MyFirstPlugin();

Dengan mengapsulkan fungsi-fungsi tersebut dalam… MyFirstPlugin Dalam kelas tersebut, semua atribut dan kaedah yang berkaitan terletak dalam skop yang sama. array( $this, ‘method_name’ ) Gaya penulisan tersebut membenarkan kaedah kelas (class methods) untuk disambungkan (dihang) ke “hooks” dalam WordPress. Pendekatan ini disyorkan untuk membina plugin yang lebih besar dan lebih kompleks.

Menerbitkan dan menyelenggara plugin.

Setelah pembangunan selesai, anda perlu memastikan bahawa plugin tersebut adalah selamat, berkesan, dan bersedia untuk diedarkan kepada pengguna lain. Ini melibatkan penggunaan kod yang selamat, pengoptimuman prestasi, serta persiapan untuk pelancaran yang sempurna.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Dari Permulaan Hingga Kemahiran: Panduan Lengkap dan Tutorial Praktikal Pembangunan Plugin WordPress

Keselamatan dan Pengesahan Data

Keselamatan plugin adalah sangat penting. Jangan pernah mempercayai data yang dimasukkan oleh pengguna atau data yang diambil terus dari pangkalan data. Sebelum memproses sebarang data, data tersebut mesti disahkan, dibersihkan, dan di-escape (diproses dengan cara yang betul untuk mengelakkan masalah keselamatan).
* 验证 (Validation):检查数据是否符合预期格式(如是否为邮箱、数字)。可以使用 filter_var atau WordPress sanitize_* Siri fungsi.
* 清理 (Sanitization):在将数据存入数据库或用于输出前,移除其中不安全的字符。例如,使用 sanitize_text_field Memproses input teks.
* 转义 (Escaping):在将数据输出到 HTML、JavaScript 或 URL 时,必须根据上下文进行转义,以防止跨站脚本攻击。WordPress 提供了 esc_html, esc_js, esc_urlesc_attr Fungsi-fungsi seperti itu.

Sebagai contoh, semasa mengeluarkan sebuah variabel yang diperoleh daripada pangkalan data:

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.
// 假设 $user_input 是从数据库获取的文本
echo '<div class="message">'`. esc_html($user_input)`.'</div>';
// 或者用于 HTML 属性
echo '<input type="text" value="' . esc_attr( $user_input ) . '">';

Pengoptimuman prestasi dan amalan terbaik.

Sebuah plugin yang cemerlang seharusnya mempunyai kesan yang minimum terhadap prestasi laman web. Ikuti amalan terbaik berikut:
* 按需加载资源:使用 wp_enqueue_scriptwp_enqueue_style Gunakan fungsi tersebut untuk memuatkan fail CSS dan JavaScript anda hanya pada halaman-halaman yang diperlukan. wp_enqueue_scripts Hook (Frontend) dan admin_enqueue_scripts Hook (belakang panggung) untuk pemasangan.
* 合理使用钩子:避免在每次页面加载时都执行大量不必要的代码。将你的函数挂载到最合适的钩子上,并利用条件标签(如 is_admin(), is_single()Ia digunakan untuk membataskan skop pelaksanaan kod.
* 数据库查询优化:尽量减少直接 SQL 查询,优先使用 WordPress 的 API(如 WP_Query, get_postsJika perlu melakukan pencarian khusus (custom query), pastikan anda menggunakan kaedah yang sesuai. $wpdb Kelas tersebut juga perlu melakukan caching untuk hasil carian.
* 提供卸载清理选项:考虑在用户删除插件时,是否需要清理插件创建的数据(如数据库表、选项等)。可以通过注册一个卸载钩子(在单独的文件中)来实现。

RINGKASAN

Artikel ini membawa anda melalui perjalanan utama dalam pembangunan plugin untuk WordPress. Kita bermula dengan membina persekitaran pembangunan dan memahami struktur asas, kemudian secara beransur-ansur membuat fail plugin pertama yang mempunyai fungsi, meneroka topik-topik lanjutan seperti menambah antara muka pengurusan pentadbir dan mengatur kod menggunakan pendekatan berorientasikan objek. Akhirnya, artikel ini menekankan kepentingan keselamatan, prestasi, dan persiapan untuk pengeluaran plugin. Ingatlah, inti pembangunan plugin terletak pada penggunaan sistem hook yang canggih dalam WordPress untuk memperluas kefungsian platform tersebut. Dengan mengikuti garis panduan pengaturcaraan yang selamat, mengoptimumkan prestasi, dan menjaga kod agar teratur, anda akan dapat membina plugin yang kuat dan boleh dipercayai, seterusnya menyumbang kepada komuniti WordPress di seluruh dunia. Berlatih secara berterusan dan membaca kod sumber plugin-core serta plugin lain yang berkualiti adalah cara terbaik untuk meningkatkan kemahiran anda.

FAQ - Soalan Lazim

Adakah pembangunan plugin untuk WordPress memerlukan kemahiran yang tinggi dalam PHP?

Walaupun tidak perlu mencapai tahap pakar, asas PHP yang kukuh adalah penting. Anda perlu memahami sintaks PHP, fungsi, array, pengaturcaraan berorientasikan objek, dan konsep-konsep lain, kerana kod asas WordPress serta plugin dan tema-temanya ditulis dalam PHP. Pemahaman yang baik tentang HTML, CSS, dan JavaScript juga sangat penting untuk mengembangkan plugin yang mempunyai interaksi pada bahagian hadapan (front end).

Bagaimana untuk membaiki (debug) plugin WordPress saya?

Pertama sekali, pastikan bahawa anda telah… wp-config.php Aktifkan mod pembangunan (debug mode) untuk WordPress dalam fail tersebut. WP_DEBUG Constant diatur kepada “true”. Ini akan memaparkan ralat PHP, amaran, dan notis pada skrin atau merekodkannya ke dalam fail log. Selanjutnya, gunakan… error_log Fungsi atau alat seperti plugin Query Monitor digunakan untuk melacak nilai variabel dan proses pelaksanaan kod. Alat pembangun (Developer Tools) dalam pelayar, terutamanya tag Console dan Network, juga sangat penting untuk menyelesaikan masalah yang berkaitan dengan JavaScript dan permintaan AJAX (Asynchronous JavaScript and XML).

Bagaimanakah plugin saya dapat bersesuaian dengan pelbagai versi WordPress?

Semasa proses pembangunan, anda harus sentiasa merujuk kepada dokumen rasmi untuk mengetahui tentang fungsi-fungsi yang telah dihapuskan atau diubah dalam versi-versi yang berbeza. Gunakan logik syarat dan pemeriksaan versi untuk memastikan keserasian dengan versi-versi sebelumnya. Sebagai contoh, anda boleh menggunakan… function_exists() Periksa sama ada fungsi tersebut tersedia, dan jika tidak, berikan cadangan pelaksanaan alternatif. Selain itu, nyatakan dengan jelas dalam fail readme.txt plugin versi WordPress yang telah anda uji.

Bagaimana untuk melaksanakan internationalisasi untuk plugin saya?

WordPress menggunakan teknologi GNU gettext untuk melaksanakan fungsi internasionalisasi (penggunaan bahasa yang berbeza). __()_e() Fungsi seperti `str_replace` digunakan untuk menggantikan semua rentetan teks yang perlu diterjemahkan. Kemudian, alat pembinaan fail POT (seperti Poedit) digunakan untuk membuat templat terjemahan, yang akan digunakan oleh penterjemah untuk menghasilkan fail `.mo` dan `.po` dalam bahasa yang diinginkan. Akhirnya, proses terjemahan dilakukan menggunakan alat yang sesuai. load_plugin_textdomain() Fungsi tersebut memuatkan fail bahasa semasa pemulaan plugin.