Pengenalan Pembangunan Plugin WordPress: Bina Perluasan Fungsi Pertama Anda Dari Kosong

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

Mengapa memilih untuk membangunkan plugin untuk WordPress?

WordPress, sebagai sistem pengurusan kandungan yang paling popular di dunia, keupayaannya untuk diperluas dengan mudah adalah berkat arkitektur pluginnya yang canggih. Membangunkan plugin sendiri bermakna anda tidak lagi terhad kepada fungsi yang tersedia dalam plugin sedia ada, dan anda dapat memenuhi keperluan khusus laman web atau pelanggan anda dengan tepat. Sama ada anda ingin menambahkan kod pendek yang mudah atau membina panel pengurusan yang kompleks, plugin membenarkan anda memisahkan logik fungsi daripada tema, memastikan bahawa fungsi tersebut tidak terjejas apabila tema diperbaharui.

Dari perspektif pembelajaran, memahami pembangunan plugin adalah jalan yang harus dilalui untuk memahami inti WordPress dengan lebih mendalam. Ia membolehkan anda mengenali dua konsep asas iaitu Action Hooks dan Filter Hooks, yang merupakan asas kepada kemodularan dan kebolehluasan WordPress. Menguasai pembangunan plugin bukan sahaja dapat meningkatkan kemahiran teknikal anda, tetapi juga membuka peluang pekerjaan yang baru, malah boleh membantu anda mencipta produk digital yang boleh dijual.

Pra-persiapan sebelum pembangunan

Sebelum menulis baris kod pertama, anda memerlukan persekitaran pembangunan yang sesuai. Ini biasanya termasuk persekitaran pelayan tempatan (seperti Local by Flywheel, XAMPP atau MAMP), sebuah editor kod (seperti VS Code atauPhpStorm), serta sebuah laman web ujian yang telah dipasang dengan WordPress. Pastikan bahawa persekitaran ujian anda selaras dengan versi PHP utama yang digunakan dalam persekitaran produksi atas talian untuk mengelakkan masalah keserasian.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Menguasai Kemahiran Asas WordPress: Panduan Praktikal Lengkap Dari Pembinaan Hingga Pengoptimuman

Memahami struktur asas plugin

Sebuah plugin WordPress yang paling asas boleh hanya mengandungi satu fail PHP. Namun, sebuah plugin yang direka dengan baik biasanya terdiri daripada beberapa direktori dan fail untuk mencapai organisasi yang lebih baik. Struktur direktori plugin yang tipikal mungkin termasuk yang berikut:
- 主插件文件(例如 my-first-plugin.phpIni adalah titik masuk untuk plugin, yang mengandungi maklumat header plugin.
- includes/ Indeks: Menyimpan fail-fail kelas atau fungsi yang berkaitan dengan fungsi utama aplikasi.
- admin/ Indeks: Menyimpan kod yang berkaitan dengan antara muka pengurusan belakang (backend management interface).
- public/ Indeks: Menyimpan kod yang ditujukan untuk bahagian hadapan (front end) laman web.
- assets/ Direktori: Tempat penyimpanan sumber statik seperti JavaScript, CSS, dan gambar.
- languages/ Indeks: Tempat penyimpanan fail terjemahan antarabangsa (.po/.mo).

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.

(Mandatory plugin header information)

Setiap plugin WordPress mesti mengandungi ulasan kepala plugin standard di bahagian atas fail PHP utamanya; ini merupakan kunci untuk WordPress mengenal pasti plugin tersebut. Berikut adalah contoh yang paling asas:

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习插件开发的简单示例插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Di antaranya,Plugin Name Ini adalah item wajib diisi, manakala yang lain adalah pilihan. Namun, untuk keutuhan dan kemudahan penyelenggaraan plugin tersebut, adalah disyorkan untuk mengisi semua maklumat yang berkaitan.Text Domain Untuk kegunaan antarabangsa (internationalization).Domain Path Menunjuk ke direktori fail bahasa.

Bina plugin pertama anda: sebuah fungsi sapaan yang mudah.

Mari kita lakukan latihan ini dengan menggunakan sebuah contoh praktikal. Kita akan membuat sebuah plugin yang akan menampilkan mesej salam yang boleh disesuaikan di bahagian atas kandungan artikel pada laman web.

Mencipta fail dan direktori untuk plugin

Pertama, di direktori di mana WordPress anda dipasang, wp-content/plugins/ Dalam folder tersebut, buatlah sebuah folder baru dan berikan nama ia sebagai… my-greeting-pluginKemudian, cipta sebuah fail PHP utama dalam folder tersebut, dan berikan nama fail tersebut sebagai… my-greeting-plugin.phpDan salin maklumat header plugin di atas ke dalamnya.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Bagaimana untuk memilih dan membangunkan plugin WordPress yang berkualiti tinggi: Dari permulaan hingga ke tahap pakar

Menggunakan “hook” untuk menambahkan fungsi

WordPress beroperasi melalui sistem hook. Untuk menambahkan maklumat sebelum kandungan artikel, kita perlu menggunakan hook yang sesuai. the_content Filter Hooks. Dalam fail plugin utama anda, tambahkan fungsi dan panggilan hook berikut:

/**
 * 在文章内容前添加问候语
 *
 * @param string $content 原始的文章内容。
 * @return string 修改后的文章内容。
 */
function mgp_add_greeting_to_content( $content ) {
    $greeting_text = get_option( 'mgp_greeting_text', '欢迎阅读!' ); // 从数据库获取设置,默认为“欢迎阅读!”
    $custom_greeting = '<div class="mgp-greeting"><p><strong>'`. esc_html($greeting_text)`.'</strong></p></div>';

// 仅对主循环中的单篇文章页面生效
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $custom_greeting . $content;
    }
    return $content;
}
// 将函数挂载到 `the_content` 过滤器
add_filter( 'the_content', 'mgp_add_greeting_to_content' );

Kod ini mendefinisikan sebuah fungsi. mgp_add_greeting_to_contentIa menerima kandungan artikel tersebut dan menambahkan sebuah kontena DIV yang mengandungi ucapan selamat di bahagian hadapan. add_filter() Fungsi: Kita akan memuat turun fungsi khusus kita ke dalam WordPress. the_content Filter tersebut digunakan untuk mengawal penggunaan ucapan selamat. Logik pengurusan dalaman fungsi tersebut memastikan bahawa ucapan selamat hanya dipaparkan dalam gelung utama halaman artikel individu di laman depan, dan tidak mempengaruhi halaman arsip atau alat tambahan (tools).

Membuat halaman tetapan pengurusan yang ringkas

Untuk membolehkan pengguna menyesuaikan teks ucapan selamat, kita perlu menambahkan halaman tetapan yang mudah. Ini melibatkan penggunaan API menu pentadbiran WordPress. Teruskan menambahkan kod berikut ke dalam fail plugin utama:

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%.
/**
 * 注册插件设置菜单和页面
 */
function mgp_register_admin_menu() {
    add_options_page(
        '问候语设置',           // 页面标题
        '问候语插件设置',       // 菜单标题
        'manage_options',      // 所需权限
        'my-greeting-plugin',  // 菜单slug
        'mgp_render_settings_page' // 用于输出页面内容的回调函数
    );
}
add_action( 'admin_menu', 'mgp_register_admin_menu' );

/**
 * 渲染设置页面的内容
 */
function mgp_render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Pengaturan Plugin Ucapan Selamat</h1>
        <form method="post" action="/ms/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'mgp_settings_group' ); // 输出设置组和非ce字段
            do_settings_sections( 'my-greeting-plugin' ); // 输出设置区域
            submit_button(); // 输出提交按钮
            ?>
        <input type="hidden" name="trp-form-language" value="ms"/></form>
    </div>
    <?php
}

/**
 * 初始化插件设置
 */
function mgp_initialize_settings() {
    // 注册一个设置
    register_setting(
        'mgp_settings_group', // 设置组名
        'mgp_greeting_text',  // 选项名,对应数据库中的键
        array( // 可选的验证回调函数
            'sanitize_callback' => 'sanitize_text_field',
            'default' =&gt; '欢迎阅读!'
        )
    );

// 添加一个设置区域
    add_settings_section(
        'mgp_main_section',           // 区域ID
        '主要设置',                   // 区域标题
        null,                         // 区域介绍的回调函数(此处不需要)
        'my-greeting-plugin'          // 页面slug
    );

// 向区域中添加一个字段
    add_settings_field(
        'mgp_greeting_field',         // 字段ID
        '问候语文本',                 // 字段标签
        'mgp_greeting_field_callback', // 用于输出字段HTML的回调函数
        'my-greeting-plugin',         // 页面slug
        'mgp_main_section'            // 区域ID
    );
}
add_action( 'admin_init', 'mgp_initialize_settings' );

/**
 * 渲染问候语文本输入字段
 */
function mgp_greeting_field_callback() {
    $greeting = get_option( 'mgp_greeting_text', '欢迎阅读!' );
    echo '<input type="text" name="mgp_greeting_text" value="' . esc_attr( $greeting ) . '" class="regular-text" />';
    echo '<p class="description">Teks ini akan dipaparkan di bahagian atas setiap artikel di laman web anda.</p>';
}

Kod ini telah melaksanakan tugas-tugas berikut:
1. Gunakan add_action( 'admin_menu', ... ) Sebuah halaman sub-menu telah ditambahkan di bawah menu “Setelan”.
2. Gunakan add_action( 'admin_init', ... ) Pengaturan awal, termasuk pilihan untuk mendaftar sebuah pangkalan data, sebuah kawasan pengaturan, dan satu bidang input.
3. 定义了渲染设置页面表单和字段的函数。
Sekarang, log masuk ke panel pentadbiran WordPress anda, dan di bawah menu “Settings” (Tetapan), anda akan menemui bahagian “Greeting Plugin Settings” (Pengaturan Plugin Salam). Di sini, anda boleh mengubah teks salam tersebut, dan perubahan tersebut akan segera kelihatan dalam artikel-artikel di laman web.

Amalan Terbaik dan Kemajuan dalam Pembangunan Plugin

Setelah menyelesaikan fungsi asas, mengikuti amalan terbaik akan menjadikan plugin anda lebih profesional, lebih selamat, dan lebih mudah untuk diselenggara.

Keselamatan adalah tugas utama.

Jangan pernah mempercayai input pengguna. Dalam plugin, semua data yang diperoleh dari luar (seperti…) $_GET$_POST$_COOKIE Data yang diperolehi daripada sumber luar (seperti pangkalan data atau pertanyaan pangkalan data) mesti disemak, dibersihkan, atau di-escape sebelum dihasilkan atau digunakan.
Output melarikan diri: Gunakan esc_html()esc_attr()esc_url()wp_kses_post() Fungsi-fungsi seperti itu.
- 清理输入:使用 sanitize_text_field()sanitize_email()intval() Fungsi-fungsi seperti itu.
- 数据库安全:使用 $wpdb Untuk melakukan pertanyaan pada kaedah kelas, atau menggunakan… prepare() Menggunakan kaedah parameterization untuk melakukan pertanyaan (query) dapat mencegah serangan SQL injection.
- 权限检查:在管理页面或执行敏感操作前,使用 current_user_can() Semak kebenaran pengguna, dan gunakannya. check_admin_referer() Menguji medan nonce untuk mencegah penipuan permintaan merentas tapak (Cross-Site Request Forgery/CSRF).

Diperoleh daripada WEB\nDisyorkan untuk membaca. Menguasai kemahiran asas WordPress untuk membina laman web profesional yang mempunyai ciri-ciri fungsional dan estetika yang menarik.

Mengimplementasikan internasionalisasi (i18n)

Untuk membolehkan plugin anda digunakan oleh pengguna di seluruh dunia, ia perlu menyokong terjemahan dalam pelbagai bahasa. Ini memerlukan anda menggunakan fungsi terjemahan WordPress untuk mengemas semua teks yang ditujukan kepada pengguna. Ubah output teks dalam kod sebelumnya:

// 在插件头信息中已定义 Text Domain: my-first-plugin
$greeting_text = get_option( 'mgp_greeting_text', __( '欢迎阅读!', 'my-first-plugin' ) );

// 在管理菜单函数中
add_options_page(
    __( '问候语设置', 'my-first-plugin' ),
    __( '问候语插件设置', 'my-first-plugin' ),
    'manage_options',
    'my-greeting-plugin',
    'mgp_render_settings_page'
);

Kemudian, anda boleh menggunakan alat seperti Poedit untuk mengekstrak rentetan teks daripada kod sumber plugin dan menggunakannya untuk tujuan yang diinginkan. .pot File-file templat, yang mana penterjemah boleh menggunakannya untuk mencipta teks dalam pelbagai bahasa. .po.mo Fail tersebut kemudian dimasukkan ke dalam plugin. /languages Katalog.

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.

Pengaturan Kod dan Pengoptimuman Prestasi

Seiring dengan pertumbuhan fungsi tambahan (plugins), adalah bijak untuk memisahkan kod ke dalam fail-fail yang berbeza. Penggunaan Pemrograman Berorientasikan Objek (Object-Oriented Programming/OOP) dan kelas (classes) untuk mengatur kod dapat meningkatkan kebolehbacaan dan kebolehgunaan semula (reusability). Bagi sumber daya seperti CSS dan JS, gunakan… wp_enqueue_style()wp_enqueue_script() Fungsi tersebut berfungsi dengan betul dalam hook yang sesuai (seperti…) wp_enqueue_scriptsadmin_enqueue_scriptsMuatkan kandungan mengikut keperluan, dan tentukan versi perpustakaan yang bergantung diperlukan. Elakkan melakukan pertanyaan pangkalan data yang mahal secara langsung dalam plugin; pertimbangkan untuk menggunakan API Transients untuk menyimpan data yang tidak kritikal dalam cache.

RINGKASAN

Mulai dengan membuat sebuah fail PHP yang ringkas dan menambahkan maklumat header plugin standard, kemudian menggunakan hook tindakan (action hooks) dan hook penapis (filter hooks) untuk mengintegrasikannya ke dalam kitaran hidup WordPress, seterusnya membina antara muka pengurusan dan mengikuti amalan terbaik keselamatan serta penyesuaian untuk pengguna dari pelbagai bahasa (internationalization), anda telah melalui proses asas dalam pembangunan sebuah plugin WordPress yang lengkap. Walaupun plugin “Hello World” ini ringkas, ia menunjukkan dengan jelas proses utama dalam pembangunan plugin: merancang fungsi, mengaktifkan hook yang sesuai, memproses data, dan membuat antara muka pengguna. Ingatlah, belajar secara berterusan daripada manual rasmi, mengkaji kod plugin sumber terbuka yang berkualiti, dan terus berlatih adalah cara terbaik untuk meningkatkan kemahiran dalam pembangunan plugin. Plugin seterusnya yang anda buat mungkin akan menyelesaikan masalah sebenar yang lebih kompleks dan menarik.

FAQ - Soalan Lazim

Berapakah fail yang diperlukan sekurang-kurangnya untuk sebuah plugin WordPress?

Sebuah plugin WordPress yang lengkap memerlukan sekurang-kurangnya satu fail PHP. Cukup dengan memastikan bahawa bahagian atas fail tersebut mengandungi maklumat header plugin yang betul (sekurang-kurangnya... Plugin NameDengan cara ini, WordPress akan dapat mengenal pasti dan mengaktifkannya dalam senarai plugin di bahagian belakang (backend). Fail tersebut boleh mengandungi semua kod fungsi, kod halaman pengurusan, dan sebagainya. Tentu saja, untuk plugin yang kompleks, adalah amalan yang disyorkan untuk memisahkan kod ke dalam beberapa fail dan direktori bagi memudahkan penyelenggaraan.

Bagaimana untuk mengelakkan konflik antara plugin yang saya bangunkan dengan plugin lain?

Kunci untuk mengelakkan konflik adalah dengan menggunakan prefiks yang unik untuk menamakan semua fungsi, kelas, variabel, nama pilihan, serta hook tindakan/filter anda. Sebagai contoh, jangan gunakan… add_greeting() Nama fungsi yang seragam seperti ini sepatutnya digantikan dengan nama yang lebih spesifik dan mudah difahami. mgp_add_greeting() Nama-nama seperti ini (di mana...) mgp (Ia merupakan singkatan untuk plugin anda.) Untuk pilihan yang disimpan dalam pangkalan data, juga perlu digunakan prefiks yang unik, seperti… mgp_greeting_textIni dapat mengurangkan kemungkinan konflik ruang nama (namespace conflicts) sebanyak mungkin.

Apa yang perlu dilakukan semasa mengaktifkan dan menonaktifkan plugin?

Apabila plugin diaktifkan, biasanya terdapat beberapa tugas sekali gus yang perlu dilakukan, seperti memeriksa versi PHP atau WordPress, membuat jadual dalam pangkalan data, dan menginisialisasikan tetapan lalai, dan sebagainya. Ini boleh dilakukan melalui… register_activation_hook() Fungsi tersebut boleh dilaksanakan dengan cara yang sama.register_deactivation_hook() Digunakan untuk mendefinisikan tindakan yang dilakukan apabila sambungan (plugin) diaktifkan semula, seperti menghapus tugas yang dijadualkan. Namun, perlu diingat bahawa fungsi untuk mengaktifkan semula sambungan biasanya tidak digunakan untuk memadamkan data; proses pembersihan data biasanya dilakukan oleh fungsi untuk membuang sambungan (uninstall hook) atau secara manual oleh pengguna.

Bagaimana untuk menambahkan halaman tetapan untuk plugin saya?

Untuk menambahkan halaman tetapan untuk plugin, terdapat dua API WordPress yang terlibat utamanya: Menu API dan Settings API. Pertama sekali, gunakan… add_action( 'admin_menu', ... ) Mengaitkan (mounting) sebuah fungsi, dan menggunakan fungsi tersebut di dalamnya. add_menu_page()add_submenu_page() Daftarlah untuk membuat halaman menu peringkat atas (top-level) atau sub-menu (sub-level). Kemudian, gunakannya. add_action( 'admin_init', ... ) Menggantungkan fungsi lain dan menggunakannya di dalamnya register_setting()add_settings_section()add_settings_field() Mari kita definisikan pilihan tetapan yang khusus dan bidang-bidang dalam borang tersebut. Akhir sekali, tulis sebuah fungsi panggilan balik (callback function) untuk merender borang HTML halaman tetapan.

Plagin saya perlu serasi dengan versi WordPress yang mana?

Ia bergantung pada khalayak pengguna sasaran anda. Secara umumnya, disyorkan untuk menyokong versi WordPress yang terkini, iaitu 3 hingga 4 versi terakhir. Anda boleh menggunakan maklumat ini dalam bahagian header plugin anda. Requires at least: Untuk menyatakan versi WordPress yang minimum diperlukan, semasa proses pembangunan, sebaiknya dielakkan penggunaan fungsi-fungsi yang sangat baru yang hanya disokong oleh versi WordPress yang terkini. function_exists() Lakukan pemeriksaan syarat untuk menyediakan penyelesaian alternatif yang serasi dengan versi sebelumnya (backward compatible). Selain itu, menguji secara berkala pada versi WordPress yang lebih lama merupakan cara yang baik untuk memastikan keserasian.