Belajar mengembangkan plugin WordPress dari awal: Bina fungsi khusus pertama anda

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

Menguasai pembangunan plugin WordPress merupakan kemahiran utama untuk memperluas fungsi laman web dan memenuhi keperluan peribadi pengguna. Ini berbeza dengan proses mengubah suai tema (theme) laman web. functions.php Berbanding dengan fail biasa, penggunaan plugin memastikan fungsi-fungsi tersebut berdiri sendiri (tidak bergantung pada tema tertentu), yang memudahkan proses migrasi, pengurusan, dan penyelenggaraan. Artikel ini akan membimbing anda dari awal untuk membuat sebuah plugin yang mempunyai struktur yang lengkap dan mematuhi standard pengkodan WordPress.

Preparasi dan pembinaan persekitaran.

Sebelum menulis baris kod pertama, anda memerlukan persekitaran pembangunan yang sesuai dan pemahaman asas tentang struktur WordPress.

Pengaturan persekitaran pembangunan

Sebuah persekitaran pembangunan tempatan yang standard merupakan asas penting untuk pembangunan yang cekap. Alat seperti XAMPP, MAMP, atau Local by Flywheel disyorkan, kerana ia membenarkan pemasangan Apache, MySQL/Nginx, PHP, dan WordPress dengan satu klik sahaja. Selain itu, pastikan editor teks atau IDE anda (seperti VS Code,PhpStorm) menyokong penyorotan sintaks PHP dan cadangan kod, yang akan meningkatkan kecekapan pembangunan dengan ketara.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Penguraian Mendalam Pembangunan Plugin WordPress: Dari Permulaan Hingga Penyesuaian yang Cekap

Memahami arkitektur plugin WordPress

Secara asasnya, sebuah plugin WordPress terdiri daripada satu atau lebih fail PHP, yang disimpan dalam direktori yang ditentukan oleh WordPress. wp-content/plugins/ Ia terletak di dalam direktori tersebut. Prinsip asasnya adalah mekanisme “hook” (pautan/kaitan). Plugin tersebut menjalankan kod pada titik masa tertentu melalui “action hook”, atau mengubah data yang dihasilkan oleh fungsi lain melalui “filter hook”. Faham. add_actionadd_filter Dua fungsi ini merupakan kunci asas untuk memulakan pembangunan 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.

Cipta plugin pertama anda: Alat Salam (Greeting Widget)

Kami akan membuat sebuah plugin yang ringkas yang dinamakan “Daily Greetings”. Ia akan memaparkan sebuah alat tambahan (widget) selamat datang yang disesuaikan pada panel kawalan (dashboard) laman web.

Membina fail utama untuk plugin

Pertama sekali, wp-content/plugins/ Cipta sebuah folder baru dalam direktori tersebut, dan berikan nama ia sebagai… my-first-greeting-pluginDalam folder tersebut, buat fail plugin utama. my-first-greeting-plugin.php

Setiap plugin mesti bermula dengan ulasan kepala plugin yang standard, yang merupakan penanda untuk WordPress mengenali maklumat plugin tersebut. Buka fail utama dan masukkan kod berikut:

<?php
/**
 * Plugin Name: 每日问候
 * Plugin URI:  https://www.yourwebsite.com/my-first-greeting-plugin
 * Description: 这是一个示例插件,用于在仪表盘显示个性化问候。
 * Version:     1.0.0
 * Author:      Your Name
 * Author URI:  https://www.yourwebsite.com
 * License:     GPL v2 or later
 * Text Domain: my-first-greeting
 */

Setelah menyimpan fail tersebut, masuk ke halaman “Pemalam” (Plugins) di panel pentadbiran WordPress. Anda sepatutnya dapat melihat pemalam “Daily Greetings” dalam senarai dan boleh mengaktifkannya. Pada masa ini, pemalam ini belum mempunyai sebarang fungsi.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Ultimatif untuk Membangunkan Plugin WordPress: Membina Plugin Pertama Anda Dari Awal Hingga Selesai.

Menambahkan alat tambahan (widgets) pada papan pemuka (dashboard)

Seterusnya, kami akan menggunakan WordPress untuk… wp_dashboard_setup Gunakan “action hook” untuk menambahkan alat tambahan (widget) panel pemantauan yang dibuat sendiri. Di bawah ulasan pada bahagian atas fail utama, tambahkan kod berikut:

// 添加仪表盘小工具
function mfgp_add_dashboard_widget() {
    wp_add_dashboard_widget(
        'mfgp_dashboard_widget',          // 小工具唯一ID
        '每日问候',                       // 小工具标题
        'mfgp_dashboard_widget_content'  // 显示内容的回调函数
    );
}
add_action( 'wp_dashboard_setup', 'mfgp_add_dashboard_widget' );

// 定义小工具内容
function mfgp_dashboard_widget_content() {
    $user = wp_get_current_user();
    $hour = date('G'); // 获取当前小时(24小时制)

if ( $hour &gt;= 5 &amp;&amp; $hour < 12 ) {
        $greeting = '早上好';
    } elseif ( $hour >= 12 && $hour &lt; 18 ) {
        $greeting = &#039;下午好&#039;;
    } else {
        $greeting = &#039;晚上好&#039;;
    }

echo &#039;<p>' . sprintf( esc_html__( '%s,%s!欢迎回来。', 'my-first-greeting' ), $greeting, esc_html( $user-&gt;display_name ) ) . '</p>';
    echo '<p>' . esc_html__( '这是你的第一个插件创建的问候小工具。', 'my-first-greeting' ) . '</p>';
}

Kod ini melakukan dua perkara: Pertama, ia mendefinisikan sebuah fungsi. mfgp_add_dashboard_widget, menggunakan wp_add_dashboard_widget Fungsi tersebut digunakan untuk mendaftarkan sebuah alat kecil (tool). Kemudian, definisi untuk alat tersebut telah dibuat. mfgp_dashboard_widget_content Fungsi ini digunakan untuk menjana kandungan untuk alat kecil (widget), yang akan menunjukkan ucapan selamat yang berbeza pada masa yang berbeza sepanjang hari, serta akan memanggil nama pengguna yang sedang log masuk. Perhatikan bahawa kami telah menggunakan… esc_html__()esc_html() Menguruskan persiapan terjemahan fungsi dan mengeluarkan kod yang telah disandikan (escaped code) merupakan amalan penting untuk memastikan keselamatan dan kebolehgunaan fungsi tersebut dalam pelbagai bahasa (internationalization).

Setelah mengaktifkan plugin tersebut, muat semula halaman panel pemantauan (dashboard) dan anda akan dapat melihat alat tambahan “Ucapan Selamat Hari” (Daily Greetings).

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

Peningkatan fungsi plugin dan amalan keselamatan

Satu plugin asas telah siap dibina, tetapi untuk menjadikannya lebih kukuh dan profesional, kita perlu memberi perhatian kepada aspek keselamatan, kebolehpenyelenggaraan, dan konfigurasi pengguna.

Tambahkan halaman tetapan plugin

Ia akan lebih berguna jika pengguna dapat menyesuaikan ucapan selamat tinggal mereka sendiri. Kami akan membuat halaman tetapan yang mudah untuk plugin tersebut.

Pertama sekali, gunakan admin_menu Action Hook menambahkan halaman sub-menu:

Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Permulaan Pembangunan Plugin WordPress: Bina Plugin Custom Pertama Anda Dari Kosong

// 添加设置菜单
function mfgp_add_admin_menu() {
    add_options_page(
        '每日问候设置',                // 页面标题
        '每日问候',                    // 菜单标题
        'manage_options',             // 所需权限
        'my-first-greeting-plugin',   // 菜单slug
        'mfgp_settings_page_content' // 回调函数
    );
}
add_action( 'admin_menu', 'mfgp_add_admin_menu' );

Kemudian, buat kandungan untuk halaman tetapan, pilihan tetapan pendaftaran, dan proses penyimpanan borang:

// 设置页面内容
function mfgp_settings_page_content() {
    ?&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( 'mfgp_settings_group' ); // 输出安全字段
            do_settings_sections( 'my-first-greeting-plugin' ); // 输出设置区块
            submit_button(); // 输出提交按钮
            ?>
        <input type="hidden" name="trp-form-language" value="ms"/></form>
    </div>
    <?php
}

// 初始化设置
function mfgp_settings_init() {
    register_setting(
        'mfgp_settings_group', // 选项组名
        'mfgp_custom_message', // 选项名
        array( 'sanitize_callback' => 'sanitize_text_field' ) // 清理回调
    );

add_settings_section(
        'mfgp_section', // 区块ID
        '自定义问候设置', // 区块标题
        null, // 区块描述回调(无)
        'my-first-greeting-plugin' // 所属页面
    );

add_settings_field(
        'mfgp_field',
        '自定义问候语前缀',
        'mfgp_field_callback', // 输出字段HTML的回调
        'my-first-greeting-plugin',
        'mfgp_section'
    );
}
add_action( 'admin_init', 'mfgp_settings_init' );

// 设置字段的回调函数
function mfgp_field_callback() {
    $value = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );
    echo '<input type="text" name="mfgp_custom_message" value="' . esc_attr( $value ) . '" class="regular-text" />';
    echo '<p class="description">Teks ini akan ditambahkan sebelum ucapan selamat.</p>';
}

Akhir sekali, ubah fungsi kandungan alat kecil tersebut agar tetapan khusus pengguna dapat dikuatkuasakan.

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 mfgp_dashboard_widget_content() {
    $user = wp_get_current_user();
    $hour = date('G');
    $custom_msg = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );

if ( $hour &gt;= 5 &amp;&amp; $hour < 12 ) {
        $greeting = '早上好';
    } elseif ( $hour >= 12 && $hour &lt; 18 ) {
        $greeting = &#039;下午好&#039;;
    } else {
        $greeting = &#039;晚上好&#039;;
    }

echo &#039;<p>' . esc_html( $custom_msg ) . sprintf( esc_html__( '%s,%s!', 'my-first-greeting' ), $greeting, esc_html( $user-&gt;display_name ) ) . '</p>';
}

Sekarang, di bawah menu “Settings” (Tetapan) pada papan kawalan WordPress, terdapat halaman pilihan “Daily Greetings” (Ucapan Selamat Hari). Pentadbir boleh menyimpan sebuah prefiks ucapan selamat yang disesuaikan sendiri.

Patuhi piawaian keselamatan dan pengkodan.

Semasa proses pembangunan, adalah penting untuk mengikuti amalan keselamatan WordPress: gunakan fungsi pengelakkan (escape function) yang sesuai untuk semua data yang berasal daripada pengguna atau pangkalan data, sebelum data tersebut dipaparkan. esc_html, esc_attr, esc_urlSemua input yang diberikan oleh pengguna perlu disahkan dan dibersihkan (misalnya, dengan menggunakan kaedah tertentu). sanitize_text_fieldGunakan wp_kses_postwp_kses Ia membenarkan penggunaan HTML yang selamat. Pada masa yang sama, adalah disyorkan untuk mengikuti garis panduan yang ditetapkan. Standard Pengaturcaraan PHP Rasmi WordPressUntuk memastikan kod tersebut jelas dan konsisten.

Pengantarabangsaan plugin dan persiapan untuk penerbitan

Untuk memastikan plugin anda dapat digunakan oleh pengguna di seluruh dunia, proses internasionalisasi (penyesuaian untuk pelbagai bahasa dan budaya) adalah langkah yang penting. Pada masa yang sama, untuk bersedia untuk diterbitkan dalam direktori rasmi, anda juga perlu mengikuti beberapa garis panduan yang ditetapkan.

Mengimplementasikan pengantarabangsaan plugin.

Kita sudah menggunakan kod tersebut dalam program kita. esc_html__() Untuk mengemaskan rentetan teks yang perlu diterjemahkan, anda perlu membuat satu fail dalam direktori plugin. Untuk melaksanakan proses internasionalisasi, anda perlu mengikuti langkah-langkah yang sesuai, termasuk menentukan fail terjemahan yang betul dan mengatur konfigurasi terjemahan dalam sistem. languages Folder. Kemudian, tambahkan kod berikut selepas ulasan pada bahagian atas fail utama untuk memuatkan bidang teks:

// 加载文本域以实现国际化
function mfgp_load_textdomain() {
    load_plugin_textdomain( 'my-first-greeting', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'mfgp_load_textdomain' );

Selepas itu, anda boleh menggunakan alat seperti Poedit untuk mengimbas rentetan terjemahan dalam kod plugin dan menjana… .pot Fail templat, dan untuk bahasa yang berbeza (seperti bahasa Cina) zh_CNCreate .po Dan selepas dikompilasi. .mo Fail, masukkan ke dalam. languages Folder.

Sedia untuk diterbitkan dalam direktori rasmi.

Jika anda merancang untuk menghantar plugin ke direktori plugin WordPress.org, anda perlu memastikan kualiti kod dan menyertakan fail metadata yang diperlukan. Sebagai contoh, anda boleh membuat… readme.txt Fail tersebut, formatnya mesti memenuhi syarat-syarat yang ditetapkan. Spesifikasi khusus untuk WordPressIa harus merangkumi nama plugin, penerangan, langkah-langkah pemasangan, soalan yang sering diajukan, log kemas kini, dan lain-lain. Selain itu, pertimbangkan untuk menambahkan fungsi “uninstall hook” yang akan membersihkan data dalam pangkalan data apabila pengguna membuang plugin tersebut.

// 插件卸载时清理选项
function mfgp_uninstall_hook() {
    delete_option( 'mfgp_custom_message' );
}
register_uninstall_hook( __FILE__, 'mfgp_uninstall_hook' );

RINGKASAN

Dengan membina plugin “Ucapan Selamat Hari Ini”, kita telah melalui keseluruhan proses pembangunan plugin WordPress secara menyeluruh: daripada membina struktur fail asas, menggunakan pengait tindakan (action hooks) untuk menambahkan fungsi, hingga mencipta antara muka pengurusan, melaksanakan piawaian keselamatan, dan membuat persiapan untuk penyesuaian mengikut bahasa (internationalization). Kuncinya adalah memahami dan menggunakan sistem pengait (hook system) WordPress dengan mahir, serta sentiasa meletakkan keselamatan dan standard kod di tempat yang paling utama. Contoh yang mudah ini merupakan titik permulaan dalam perjalanan pembangunan plugin anda. Anda boleh membina pada asas ini untuk meneroka fungsi yang lebih kompleks seperti kod pendek (shortcodes), jenis artikel yang disesuaikan (custom article types), titik akhir API REST (REST API endpoints), dan sebagainya, untuk mengembangkan plugin profesional yang berkuasa.

FAQ - Soalan Lazim

Di mana plugin harus diletakkan?

WordPress plugin mesti diletakkan di dalam direktori yang ditentukan oleh WordPress pada laman web tersebut. wp-content/plugins/ Di dalam direktori tersebut, setiap plugin boleh berupa sebuah fail PHP yang berdiri sendiri. Namun, yang lebih biasa ialah sebuah folder yang dinamakan sama dengan nama plugin tersebut, di mana terdapat fail utama plugin dan sumber daya lainnya.

Mengapa plugin saya tidak dipaparkan dalam senarai latar belakang?

Sila periksa format ulasan di bahagian atas fail plugin utama (seperti Plugin Name, Description, dll.) untuk memastikan ia betul dan lengkap. Pastikan fail tersebut berada dalam direktori yang betul, dan WordPress mempunyai hak akses untuk membaca fail tersebut. Selain itu, periksa juga sama ada terdapat ruang kosong atau karakter yang tidak perlu di awal kod PHP.

Bagaimana untuk membaiki ralat PHP dalam plugin?

wp-config.php Dalam fail tersebut, akan… WP_DEBUG Konstanta ditetapkan kepada trueIni akan membenarkan WordPress untuk menunjukkan ralat PHP, amaran, dan notis pada halaman web. Sila perhatikan bahawa ciri ini hanya perlu diaktifkan dalam persekitaran pembangunan, dan pastikan ia dimatikan sebelum laman web dilancarkan ke perkhidmatan awam.

Apa perbezaan antara fail functions.php dalam plugin dan tema?

Dalam topik ini, functions.php Ciri-ciri yang ditambahkan adalah berkaitan dengan tema tertentu. Apabila tema ditukar, ciri-ciri tersebut mungkin tidak berfungsi lagi. Sebaliknya, ciri-ciri yang disediakan oleh plugin adalah bebas daripada tema; ia akan selalu tersedia selagi plugin tersebut diaktifkan, tidak kira tema yang digunakan. Bagi ciri-ciri yang bersifat umum (boleh digunakan dalam pelbagai tema), mengembangkan plugin merupakan pilihan yang lebih baik.

Bagaimana saya boleh membolehkan pembangun lain mengembangkan plugin saya?

Anda boleh membenarkan pembangun lain untuk mengembangkan plugin anda dengan menyediakan “action hooks” dan “filter hooks” yang disesuaikan. do_action() Cipta pengait tindakan (action hook) untuk “melakukan sesuatu” di tempat di mana kod perlu disisipkan. Gunakannya. apply_filters() Mencipta “filter hooks” membenarkan pengguna untuk mengubah nilai data tertentu dalam plugin anda. Ini merupakan model kerjasama yang umum di ekosistem WordPress antara pelbagai plugin.