Panduan lengkap untuk pembangunan plugin WordPress: dari pemula hingga mahir, tutorial praktikal.

Baca dalam 4 minit.
2026-03-14
2026-06-04
2,208
Saya mendapat komisen apabila anda membeli-belah melalui pautan di bawah, tanpa sebarang kos tambahan kepada anda.

Membina persekitaran pembangunan untuk plugin WordPress

Untuk memulakan pembangunan plugin WordPress, anda perlu membina sebuah persekitaran pembangunan tempatan yang profesional terlebih dahulu. Ini bukan sahaja membolehkan anda melakukan ujian tanpa mempengaruhi laman web dalam talian, tetapi juga meningkatkan kecekapan pembangunan dengan ketara. Sebuah persekitaran pembangunan yang tipikal termasuk perisian pelayan tempatan (seperti XAMPP, MAMP atau Local by Flywheel), editor kod (seperti VS Code atau PHPStorm), serta pemasangan WordPress yang bersih.

Fail pembangunan utama adalah fail utama plugin anda, dan namanya mengikut peraturan tertentu. Fail utama plugin biasanya merupakan fail PHP, sebagai contoh… my-first-plugin.phpFail ini mesti mengandungi ulasan kepala plugin yang khusus, di mana WordPress menggunakan maklumat ini untuk mengenal pasti plugin anda. Berikut adalah contoh asas ulasan kepala plugin:

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

Letakkan fail yang mengandungi kod di atas ke dalam direktori pemasangan WordPress. /wp-content/plugins/ Dalam folder tersebut, kemudian masuk ke halaman “Plugins” di panel pentadbiran WordPress, dan anda akan dapat melihat serta mengaktifkan plugin anda. Walaupun plugin tersebut belum mempunyai sebarang fungsi buat masa ini, ini menandakan bahawa persekitaran pembangunan telah dibina dengan jayanya.

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

Mengerti struktur direktori plugin

Seiring dengan peningkatan kerumitan fungsi tambahan (plugins), menjadi sukar untuk menyelenggara semua kod dalam satu fail utama. Oleh itu, adalah sangat penting untuk mewujudkan struktur fail dan direktori yang jelas. Direktori plugin yang teratur bukan sahaja memudahkan kerjasama antara ahli pasukan, tetapi juga memudahkan pengembangan fungsi tambahan pada masa akan datang.

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.

Struktur direktori plugin berskala sederhana yang disyorkan adalah seperti berikut:
- my-plugin/ (Direktori akar plugin)
- my-plugin.php (Buku fail utama plugin, bertanggungjawab untuk proses permulaan dan definisi asas.)
- uninstall.php (Skrip pembersihan yang dijalankan semasa penyingkiran plugin)
- includes/ (Menyimpan fail-fail kelas atau fungsi yang berkaitan dengan fungsi utama)
- admin/ (Kod yang berkaitan dengan antara muka pengurusan latar belakang)
- public/ (Menyimpan kod yang digunakan oleh antaramuka pengguna)
- assets/ (Menyimpan sumber statik seperti CSS, JavaScript, gambar, dll.)
- languages/ (Berkas untuk penyimpanan fail terjemahan antarabangsa: .pot/.mo)

Dalam fail utama my-plugin.php Dalam proses ini, anda biasanya akan mendefinisikan konstanta yang berkaitan dengan plugin (seperti laluan plugin dan URL), kemudian menggunakannya dalam kod program. require_once Kenyataan tersebut menyatakan bahawa fungsi-fungsi dari direktori lain boleh dimasukkan ke dalam kod mengikut keperluan. Pendekatan modular ini memastikan pengurusan kod menjadi lebih teratur dan sistematik.

Mekanisme teras plugin: Hook dan Filter

Falsafah utama dalam pembangunan plugin WordPress adalah “Hook”. Mekanisme Hook membenarkan anda untuk menyisipkan kod anda sendiri pada titik masa tertentu, atau mengubah data yang dihasilkan oleh fungsi lain, tanpa perlu mengubah kod asas WordPress. Hook terutamanya dibahagikan kepada dua jenis: Action dan Filter.

Hook untuk tindakan membenarkan anda menjalankan fungsi khusus apabila acara tertentu berlaku. Sebagai contoh, apabila artikel diterbitkan, pengguna log masuk, atau menu latar belakang dimuat. add_action() Fungsi tersebut boleh “memuatkan” fungsi panggilan balik (callback function) anda ke pada pengait tindakan (action hook) yang ditentukan.

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

Hook filter membenarkan anda membuat pengubahsuaian pada data. Dalam proses pemprosesan WordPress, data (seperti kandungan artikel, tajuk, ringkasan) akan melalui satu siri filter sebelum dihantar ke pangkalan data atau ke browser. Anda boleh menggunakan hook filter ini untuk melakukan pengubahsuaian yang diperlukan. add_filter() Fungsi digunakan untuk mengubah data tersebut.

Bagaimana untuk menambahkan sebuah “action hook”?

Bayangkan anda ingin menambahkan kenyataan hak cipta secara automatik di akhir setiap artikel. Ini memerlukan tindakan yang dilakukan selepas kandungan artikel dipaparkan, tetapi lebih tepat lagi, ia melibatkan pengubahsuaian pada kandungan artikel itu sendiri, jadi penggunaan penapis (filter) adalah lebih sesuai. Walau bagaimanapun, untuk tujuan demonstrasi, mari kita pertimbangkan untuk menghantar e-mel kepada pentadbir apabila artikel diterbitkan.

Pertama sekali, anda perlu membuat sebuah fungsi panggilan balik (callback function), sebagai contoh: myplugin_notify_admin_on_publishKemudian, gunakan add_action() Fungsi tersebut akan menggunakannya untuk pemasangan (mounting). publish_post In this action.

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 myplugin_notify_admin_on_publish( $post_id, $post ) {
    // 获取管理员邮箱
    $admin_email = get_option( 'admin_email' );
    $subject = '新文章已发布:' . $post->post_title;
    $message = '您网站上的文章“' . $post->post_title . '”刚刚被发布。';
    // 发送邮件
    wp_mail( $admin_email, $subject, $message );
}
// 将函数挂载到 publish_post 动作钩子,优先级为10,接受2个参数
add_action( 'publish_post', 'myplugin_notify_admin_on_publish', 10, 2 );

Bagaimana untuk menambahkan satu pengait penapis (filter hook)?

Sekarang, mari kita laksanakan matlamat asal: menambahkan maklumat hak cipta di akhir kandungan artikel. Untuk ini, kita perlu melakukan proses penapisan terlebih dahulu. the_content Data ini.

function myplugin_add_copyright_to_content( $content ) {
    // 确保只在网站前端的单篇文章页面执行
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $copyright_text = '<p><em>Hak cipta artikel ini milik laman web ini. Sila berikan sumber apabila ingin menggunakannya semula.</em></p>';
        $content .= $copyright_text;
    }
    return $content; // 必须返回修改后的内容
}
add_filter( 'the_content', 'myplugin_add_copyright_to_content' );

Memahami dan menguasai penggunaan “hooks” (pautan/kaitan dalam kod) adalah kunci untuk membuka kemungkinan penyesuaian yang tidak terbatas dalam WordPress.

Membuat halaman pentadbiran pengurusan plugin

Banyak plugin memerlukan pilihan konfigurasi untuk pengguna, yang biasanya dilakukan melalui halaman menu pengurusan di bahagian belakang WordPress (backend). WordPress menyediakan satu siri fungsi untuk menambahkan item menu utama atau sub-menu, serta untuk merender halaman tetapan yang bersesuaian.

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

Tambahkan menu pengurusan peringkat tinggi.

Gunakan add_menu_page() Fungsi tersebut boleh membuat item menu latar belakang yang berasingan untuk plugin anda. Fungsi ini memerlukan beberapa parameter, termasuk tajuk halaman, tajuk menu, kebenaran pengguna, nama samaran menu, dan fungsi panggilan balik (callback function), dan lain-lain.

Kod di bawah ini menunjukkan cara untuk menambahkan halaman menu utama yang ringkas:

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 myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',       // 页面标题
        '我的插件',           // 菜单标题
        'manage_options',    // 所需权限(管理员)
        'myplugin-settings', // 菜单别名(slug)
        'myplugin_render_settings_page', // 用于输出页面内容的回调函数
        'dashicons-admin-generic', // 图标(使用Dashicons)
        30                   // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// 渲染设置页面的回调函数
function myplugin_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
            // 输出设置字段、非ce等(需要先使用 settings_fields 和 register_setting)
            settings_fields( 'myplugin_options' );
            do_settings_sections( 'myplugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="ms"/></form>
    </div>
    &lt;?php
}

Hanya membuat halaman sahaja tidak cukup; biasanya kita perlu menambahkan bidang tetapan yang boleh disimpan pada halaman tersebut. Ini memerlukan penggunaan API Tetapan (Settings API) WordPress, yang membenarkan pengurusan pendaftaran, pengesahan, dan penyimpanan pilihan secara selamat.

Gunakan API Tetapan untuk mendaftar pilihan.

Menetapkan API menyediakan cara yang standard dan selamat untuk membuat borang yang mengandungi bidang seperti kotak masukan, kotak pilihan (checkboxes), dan lain-lain, serta menyimpan data secara automatik ke dalam WordPress. wp_options Dalam jadual data.

Pertama sekali, anda perlu mendaftar satu pilihan tetapan, kemudian menambahkan satu kawasan tetapan dan bidang (field).

function myplugin_settings_init() {
    // 注册一个新设置项 “myplugin_options”
    register_setting(
        'myplugin_options', // 选项组名
        'myplugin_settings', // 存储在wp_options表中的option_name
        'myplugin_sanitize_callback' // 可选的清理回调函数
    );

// 在页面 “myplugin-settings” 上添加一个区域
    add_settings_section(
        'myplugin_section_general',
        '通用设置',
        'myplugin_section_general_callback',
        'myplugin-settings'
    );

// 向该区域添加一个字段
    add_settings_field(
        'myplugin_field_footer_text',
        '页脚文本',
        'myplugin_field_footer_text_callback',
        'myplugin-settings',
        'myplugin_section_general',
        [ 'label_for' => 'myplugin_field_footer_text' ]
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

// 字段渲染回调函数
function myplugin_field_footer_text_callback() {
    $options = get_option( 'myplugin_settings' );
    $value = $options['footer_text'] ?? ''; // PHP 7.0+ 空合并运算符
    echo '<input type="text" id="myplugin_field_footer_text" name="myplugin_settings[footer_text]" value="' . esc_attr( $value ) . '" class="regular-text" />';
}

Halaman belakang yang dibuat dengan cara ini mempunyai pengesahan data, penyimpanan, dan keselamatan yang dijamin oleh inti WordPress, menjadikannya amalan terbaik untuk pembangunan antaramuka pengurusan plugin.

Keselamatan plugin dan amalan terbaik.

Membangunkan sebuah plugin yang popular memerlukan kombinasi ciri-ciri yang kuat, keselamatan yang tinggi, kecekapan yang baik, dan kemudahan dalam penyelenggaraan. Mengikuti amalan pengaturcaraan yang selamat merupakan tanggungjawab utama untuk melindungi laman web pengguna daripada serangan.

Pemverian data, pembersihan data, dan pengekstrakan karakter khusus (escape)

Ini adalah tiga garis pertahanan keselamatan WordPress. Secara ringkas: Pengesahan (Validation) - Memeriksa data input untuk memastikan ia memenuhi format yang dikehendaki (seperti alamat e-mel); Pembersihan (Sanitization) - Membuang bahagian yang tidak selamat atau tidak sah daripada data sebelum menyimpannya dalam pangkalan data; Escaping - Memastikan data tidak disalah anggap sebagai kod yang boleh laksanakan semasa mengeluarkannya ke pelayar (HTML, JavaScript, URL).

  • Pengesahan: Gunakan fungsi seperti is_email(), absint()
  • Pembersihan: Gunakan fungsi seperti sanitize_text_field(), sanitize_email(), wp_kses_post()(Digunakan untuk membenarkan kandungan HTML tertentu.)
  • Escape: Gunakan fungsi seperti… esc_html()(输出到HTML元素内), esc_url()(Dihantar ke atribut URL), esc_attr()(Dihantar ke dalam atribut HTML):, wp_kses()(Escape characters selectively.)

Jangan pernah percaya pada input pengguna. Semasa menerima data (seperti dari…) $_POST$_GETPembersihan mesti dilakukan, dan pengelakan (escape) mesti dilakukan semasa mengeluarkan data.

Mengimplementasikan titik akhir AJAX yang selamat

Fungsi AJAX sangat sering digunakan dalam plugin. WordPress menyediakan… wp_ajax_{action}wp_ajax_nopriv_{action} Hook untuk mengendalikan permintaan AJAX. Kunci kepada keselamatan terletak pada pemeriksaan hak akses (nonce) dan keupayaan pengguna.

// 为登录用户添加AJAX处理
add_action( 'wp_ajax_myplugin_action', 'myplugin_handle_ajax_request' );
// 如果希望未登录用户也能访问,则需额外添加(慎用)
// add_action( 'wp_ajax_nopriv_myplugin_action', 'myplugin_handle_ajax_request' );

function myplugin_handle_ajax_request() {
    // 1. 检查Nonce(防止跨站请求伪造)
    check_ajax_referer( 'myplugin_secure_nonce', 'security' );

// 2. 检查用户权限(例如,只有管理员才能执行此操作)
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( '权限不足', 403 );
    }

// 3. 获取并清理输入数据
    $some_data = sanitize_text_field( $_POST['some_data'] ?? '' );

// 4. 处理业务逻辑...
    $result = [ 'success' => true, 'message' => '处理成功' ];

// 5. 返回JSON响应
    wp_send_json( $result );
}

Dalam JavaScript front-end, apabila menghantar permintaan, adalah perlu untuk menghantar nilai `nonce` bersama-sama dengan data lain. wp_localize_script Hantarlah ke sana.

Pengaturcaraan untuk penyesuaian antarabangsa plugin

Untuk memastikan plugin anda dapat digunakan oleh pengguna di seluruh dunia, anda perlu membuat persiapan yang sewajarnya untuk penggunaan dalam pelbagai bahasa (internationalization atau i18n). Ini bermakna semua teks yang ditujukan untuk pengguna tidak boleh ditulis terus ke dalam kod, sebaliknya harus dibungkus menggunakan fungsi terjemahan yang disediakan oleh WordPress.

Fungsi yang paling sering digunakan adalah… __()(Dapatkan teks terjemahan) Dan _e()Anda perlu mendefinisikannya di bahagian atas plugin. Text DomainDan gunakannya secara konsisten dalam kod.

// 在插件主文件头部已定义:Text Domain: my-first-plugin

// 在代码中使用
$greeting = __( 'Hello, world!', 'my-first-plugin' );
_e( 'This text will be echoed and translatable.', 'my-first-plugin' );

Kemudian, anda boleh menggunakan alat seperti Poedit untuk menghasilkannya. .pot File-file templat, yang mana penterjemah boleh menggunakannya untuk mencipta teks dalam pelbagai bahasa. .mo Fail. Letakkan fail terjemahan dalam plugin tersebut. /languages/ Dalam direktori tersebut, WordPress akan secara automatik memuat turun terjemahan yang sesuai berdasarkan tetapan bahasa laman web.

RINGKASAN

Pembangunan plugin untuk WordPress adalah proses mengubah idea kreatif menjadi ciri-ciri yang berfungsi dengan baik. Asas utamanya terletak pada pemahaman mekanisme “hook”, pematuhan kepada garis panduan keselamatan, dan penggunaan struktur kod yang modular. Bermula dari membina persekitaran pembangunan, menulis fail utama pertama, hingga mengintegrasikan fungsi-fungsi asas WordPress dengan mendalam menggunakan “action” dan “filter hook”, seterusnya mencipta antara muka pentadbiran yang profesional, setiap langkah mencerminkan kualiti dan kemahiran pengembang. Keselamatan merupakan kunci kejayaan sebuah plugin; pengesahan data, pembersihan data, pengelakan serangan (escaping), serta pelaksanaan AJAX yang selamat adalah prinsip asas yang mesti dipatuhi. Akhirnya, dengan persiapan untuk penggunaan plugin dalam pelbagai bahasa (internationalization), plugin anda akan dapat melayani pengguna di seluruh dunia. Dengan menguasai kemahiran-kemahiran asas ini, anda akan mempunyai keupayaan untuk membina plugin WordPress yang berkualiti tinggi dari awal.

FAQ - Soalan Lazim

Apakah pengetahuan asas yang diperlukan untuk membangunkan plugin WordPress?

Untuk mengembangkan plugin WordPress, anda perlu memiliki pengetahuan asas dalam bahasa pengaturcaraan PHP, kerana logik teras plugin ditulis dalam PHP. Pada masa yang sama, anda juga perlu memahami asas HTML, CSS, dan JavaScript untuk membina antara muka pengguna dan interaksi dengan sistem tersebut. Yang paling penting, anda perlu memahami struktur asas WordPress, terutamanya sistem Hook-nya, termasuk Action dan Filter, yang merupakan cara utama bagi plugin untuk berinteraksi dengan WordPress.

Bagaimana untuk men-debug plugin WordPress saya?

Disyorkan untuk menggunakan mod WP_DEBUG. Ia terletak dalam direktori akar WordPress. wp-config.php Dalam fail tersebut, akan… define( 'WP_DEBUG', false ); Ubah kepada define( 'WP_DEBUG', true );Ini akan memaparkan ralat dan amaran PHP pada skrin, serta merekodkannya. /wp-content/debug.log Berada dalam fail tersebut. Pada masa yang sama, anda boleh memasang tambahan pemantauan pertanyaan (seperti Query Monitor) untuk menganalisis lebih lanjut pertanyaan pangkalan data, pelaksanaan fungsi tertentu (hook), dan kekangan prestasi. Alat pembangun pelayar (Console, Network) juga sangat penting untuk menyahut masalah yang berkaitan dengan JavaScript dan permintaan AJAX.

Bagaimana plugin saya boleh kompatibel dengan tema atau plugin lain?

Untuk memastikan keserasian yang maksimum, anda harus mengikuti standard pengkodan WordPress dan amalan terbaik. Gunakan awalan nama fungsi atau nama kelas yang khusus untuk plugin untuk mengelakkan konflik nama dengan kod lain. Gunakan variabel global dengan berhati-hati. Apabila menambah jadual pangkalan data yang dibuat sendiri, gunakan juga awalan untuk nama jadual tersebut. Untuk ciri-ciri yang mungkin akan diperluas oleh pembangun lain, pertimbangkan untuk menyediakan “hook” (mekanisme penghubung) yang sesuai. Sebelum membuat perubahan pada data global (seperti variabel pertanyaan), periksa keadaannya terlebih dahulu dan usahakan untuk memulihkannya ke keadaan asal setelah selesai operasi. Melakukan ujian yang menyeluruh merentasi tema dan plugin adalah langkah yang perlu untuk memastikan keserasian.

Setelah pembangunan selesai, bagaimanakah cara untuk mengeluarkan plugin tersebut ke direktori rasmi WordPress?

Pertama sekali, anda perlu memastikan bahawa plugin tersebut mematuhi sepenuhnya garis panduan pembangunan plugin rasmi dan spesifikasi kod. Daftar akaun di WordPress.org dan hantar plugin anda. Anda perlu menyimpan kod plugin di repositori SVN, serta menyediakan fail Readme.txt yang terperinci (menggunakan format yang ditentukan). Plugin tersebut harus lulus pemeriksaan kod rasmi, dengan tumpuan pada aspek keselamatan, kualiti kod, ulasan kod (mesti menggunakan gaya DocBlock), dan tiada kod berbahaya. Setelah penghantaran yang berjaya, anda boleh mengemas kini dan menyelenggara versi plugin anda melalui SVN.