Panduan Permulaan Pembangunan Plugin WordPress: Cipta Plugin Pertama Anda Dari Kosong

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

Preparasi dan pembinaan persekitaran.

Sebelum mula menulis kod, anda perlu memastikan bahawa anda mempunyai persekitaran pembangunan yang sesuai. Ini termasuk pemasangan WordPress secara lokal dan sebuah editor kod. Persekitaran lokal membolehkan anda menguji dan membetulkan kod dengan bebas tanpa mempengaruhi laman web yang berada dalam talian. Perisian persekitaran pembangunan lokal yang sering digunakan termasuk Local by Flywheel, XAMPP, atau MAMP.

Anda perlu memikirkan nama yang unik untuk plugin anda, nama tersebut akan digunakan sebagai nama direktori utama plugin dan juga nama fail utama. Sebagai contoh, jika plugin anda dinamakan “Hello World”, maka fail utama plugin anda boleh dinamakan “HelloWorld.js”. hello-world.phpPastikan nama dan deskripsi plugin anda adalah unik dalam direktori plugin WordPress, ini dapat membantu mengelakkan konflik dengan plugin lain.

Selain itu, adalah sangat penting untuk mengenali dengan baik panduan pembangunan rasmi WordPress dan rujukan kodnya. Memahami konsep-konsep asas WordPress, seperti Action Hooks, Filter Hooks, Shortcodes, dan API penyetelan (Settings API), akan meletakkan asas yang kukuh untuk pembangunan anda.

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

Mencipta fail plugin pertama

Inti sebuah plugin terdiri daripada satu atau lebih fail PHP. Dalam kes yang paling mudah, sebuah plugin boleh terdiri daripada hanya satu fail PHP sahaja. Untuk membuat sebuah plugin yang berfungsi dengan baik, anda perlu menambahkan komen standard yang mengandungi maklumat plugin di bahagian atas fail plugin utama. Blok komen ini akan memberitahu WordPress semua maklumat meta tentang plugin anda, seperti nama, deskripsi, versi, penulis, dan lain-lain.

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

WordPress mengenal pasti dan menunjukkan maklumat plugin dengan membaca ulasan dalam format tertentu di bahagian atas fail. Berikut adalah contoh kepala plugin yang paling asas:

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

Simpan kod tersebut ke dalam sebuah fail PHP yang baru, contohnya: `new_php_file.php`. my-first-plugin.phpKemudian, letakkan fail tersebut ke dalam direktori pemasangan WordPress anda yang berada di lokasi setempat. wp-content/plugins Dalam folder tersebut. Sekarang, setelah anda masuk ke halaman “Plugins” di panel pentadbiran WordPress, anda sepatutnya dapat melihat sebuah plugin baru dengan nama “My First Plugin” dalam senarai, dan anda boleh mengaktifkannya. Buat masa ini, plugin tersebut tidak mempunyai sebarang fungsi.

Menambahkan fungsi asas untuk plugin

Setelah plugin diaktifkan, kami akan menambahkan satu fungsi yang mudah kepadanya: menambahkan segmen teks khusus secara automatik di akhir kandungan artikel. Ini memerlukan penggunaan hook penapis (filter hook) dalam WordPress. the_content

Anda boleh menambahkan kod berikut di bawah maklumat kepala plugin yang telah diberikan:

Diperoleh daripada WEB\nDisyorkan untuk membaca. Bermula dari kosong: Penjelasan lengkap proses pembangunan plugin WordPress

/**
 * 在文章内容末尾添加自定义文本
 *
 * @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, yang disajikan oleh “My First Plugin”.</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
// 将自定义函数挂载到 `the_content` 过滤器上
add_filter( 'the_content', 'mfp_add_footer_text' );

Kod ini mendefinisikan sesuatu yang dinamakan… mfp_add_footer_text Fungsi tersebut menerima kandungan artikel sebagai input. $content Sebagai parameter, di dalam fungsi tersebut, tag syarat (condition tag) digunakan terlebih dahulu…is_single(), in_the_loop(), is_main_query()untuk memastikan kami hanya mengubah kandungan dalam gelung utama halaman artikel tunggal, dan mengelakkan mempengaruhi halaman lain seperti halaman utama dan halaman arkib. Kemudian, ia mencipta segmen teks HTML tersuai dan menambahkannya selepas kandungan asal. Akhir sekali, melalui add_filter Fungsi tersebut akan “memuatkan” fungsi khusus yang dibina sendiri ini ke dalam WordPress. the_content Pada penapis tersebut.

Setelah menyimpan fail tersebut, muat semula halaman artikel pada bahagian hadapan (frontend), dan anda akan melihat teks yang telah ditambahkan di hujung kandungan artikel tersebut.

Membangunkan ciri-ciri lanjutan: Mencipta menu pengurusan dan halaman pilihan

Sebuah plugin yang lengkap dengan ciri-ciri yang diperlukan biasanya memerlukan interaksi dengan pentadbir, dan ini biasanya dilakukan dengan menambahkan halaman tetapan pada bahagian belakang (backend). WordPress menyediakan API yang kaya untuk membuat menu pengurusan dan halaman pilihan.

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

Menambahkan item menu plugin di latar belakang

Kita akan membuat halaman menu pengurusan yang berasingan untuk plugin tersebut, yang digunakan untuk mengkonfigurasi beberapa pilihan. Ini memerlukan penggunaan… add_action Kekunci dan admin_menu Tindakan.

Teruskan menambahkan kod berikut ke dalam fail utama plugin anda:

/**
 * 在 WordPress 后台管理菜单中添加一个新的顶级菜单项
 */
function mfp_register_admin_menu() {
    add_menu_page(
        '我的插件设置',          // 页面标题
        '我的插件',             // 菜单标题
        'manage_options',       // 所需权限
        'my-first-plugin',      // 菜单 slug
        'mfp_render_settings_page', // 渲染页面的回调函数
        'dashicons-admin-plugins', // 图标(可选)
        80                      // 菜单位置
    );
}
add_action( 'admin_menu', 'mfp_register_admin_menu' );

add_menu_page Fungsi ini digunakan untuk mendaftar menu utama yang baru. Di dalamnya,manage_options Ia merupakan penanda hak akses, yang bermakna hanya pengguna yang mempunyai hak “Opsi Pengurusan” (biasanya pentadbir) sahaja yang boleh melihat menu ini.mfp_render_settings_page Ini adalah nama fungsi yang akan kita definisikan seterusnya, yang digunakan untuk menghasilkan kandungan HTML halaman tetapan.

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

Membina kandungan untuk halaman tetapan

Sekarang, kita perlu mendefinisikan fungsi panggilan balik (callback function) yang telah disebutkan di atas. mfp_render_settings_page Untuk merender halaman tetapan yang ringkas…

/**
 * 渲染插件设置页面的内容
 */
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
            // 输出设置字段、安全 nonce 字段等
            settings_fields( 'mfp_settings_group' );
            do_settings_sections( 'my-first-plugin' );
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="ms"/></form>
    </div>
    &lt;?php
}

Fungsi ini menghasilkan struktur halaman pentadbiran asas WordPress, yang merangkumi tajuk dan sebuah borang. Ia menggunakan dua fungsi teras daripada API Tetapan WordPress:settings_fieldsdo_settings_sectionsUntuk menjadikannya berfungsi, kita juga perlu mendaftar tetapan (settings), bahagian (sections), dan medan (fields).

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.

Gunakan API Tetapan untuk mendaftar pilihan.

Penetapan API dalam WordPress menyediakan cara yang selamat dan standard untuk mengurus pendaftaran, penyimpanan, dan pengesahan pilihan borang. Kita akan terus menambahkan kod berikut untuk mendaftarkan satu bidang teks yang mudah.

/**
 * 初始化插件的设置
 */
function mfp_settings_init() {
    // 注册一个新的设置项 `mfp_options` 到数据库
    register_setting( 'mfp_settings_group', 'mfp_options' );

// 在页面内添加一个新的节
    add_settings_section(
        'mfp_section_basic',
        '基础设置',
        'mfp_section_basic_callback',
        'my-first-plugin'
    );

// 向节中添加一个字段
    add_settings_field(
        'mfp_field_custom_text',
        '自定义页脚文本',
        'mfp_field_custom_text_callback',
        'my-first-plugin',
        'mfp_section_basic',
        array( 'label_for' =&gt; 'mfp_field_custom_text' )
    );
}
add_action( 'admin_init', 'mfp_settings_init' );

/**
 * 节描述的回调函数(可以为空)
 */
function mfp_section_basic_callback() {
    echo '<p>Di sini, anda boleh mengkonfigurasi pilihan asas untuk plugin tersebut.</p>';
}

/**
 * 字段 `mfp_field_custom_text` 的回调函数,用于输出 HTML 输入框
 */
function mfp_field_custom_text_callback() {
    // 从数据库获取现有值
    $options = get_option( 'mfp_options' );
    $value = isset( $options['custom_text'] ) ? $options['custom_text'] : '';
    ?&gt;
    <input type="text"
           id="mfp_field_custom_text"
           name="mfp_options[custom_text]"
           value="<?php echo esc_attr( $value ); ?>"
           class="regular-text" />
    <p class="description">Teks ini akan dipaparkan di akhir artikel.</p>
    &lt;?php
}

Sekarang, kita perlu mengubah suai yang telah dibuat sebelum ini. mfp_add_footer_text Gunakan fungsi tersebut untuk memanfaatkan nilai pilihan yang baru kita buat, bukan teks yang telah dikodkan secara tetap (hardcoded).

function mfp_add_footer_text( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $options = get_option( 'mfp_options' );
        $custom_text = isset( $options['custom_text'] ) ? $options['custom_text'] : '';
        if ( ! empty( $custom_text ) ) {
            $content .= '<p><em>'`. esc_html($custom_text)`.'</em></p>';
        }
    }
    return $content;
}

Setakat ini, plugin anda kini mempunyai halaman tetapan belakang yang lengkap. Pentadbir boleh mencari halaman tetapan tersebut di menu “My Plugins”, memasukkan teks kaki halaman yang diinginkan, dan menyimpannya. Tekst tersebut akan dipaparkan secara dinamik di akhir setiap artikel pada bahagian hadapan laman web.

Pengoptimuman Plugin dan Amalan Keselamatan

Semasa mengembangkan plugin, mengikuti amalan terbaik adalah sangat penting untuk keselamatan, prestasi, dan kemudahan penyelenggaraan. Berikut adalah beberapa prinsip asas yang perlu dipegang:

Pastikan keselamatan kod.

Semua data yang diterima daripada bahagian hadapan (frontend) atau antara muka pengurusan (management interface) mesti disahkan, dibersihkan, dan di-escape sebelum dihantar ke pelayar (browser) atau disimpan dalam pangkalan data (database). Ini bertujuan untuk mencegah kelemahan keselamatan seperti serangan skrip merentas tapak (Cross-Site Scripting – XSS) dan serangan penyisipan SQL (SQL Injection).

  • Keluaran yang diubah: Gunakan fungsi seperti esc_html(), esc_attr(), esc_url(), wp_kses_post() Untuk mengelakkan masalah dengan kandungan dinamik, kita perlu menggunakan mekanisme pengelakan (escape) yang sesuai.
  • Pembersihan input: Gunakan fungsi seperti sanitize_text_field(), sanitize_email(), intval() Untuk memproses data daripada borang yang dihantar oleh pengguna.
  • Semakan Keistimewaan: Digunakan dalam fungsi panggilan balik pentadbir (administrator callback function). current_user_can() Lakukan pengesahan hak akses sekali lagi. Pada titik akhir AJAX atau REST API yang melibatkan pengubahsuaian data, pastikan untuk menggunakan nonce (token nombor) untuk pengesahan.

Ikuti standard pengekodan WordPress.

Menggunakan standard pengaturcaraan WordPress dapat memastikan gaya kod anda selaras dengan kod asas, meningkatkan kebolehbacaan, dan memudahkan kerjasama antara pembangun lain. Ini termasuk penggunaan pengindasan yang betul, gaya kurungan, dan konvensyen penamaan (fungsi dan variabel menggunakan huruf kecil bersama garis bawah). Anda boleh menggunakan PHP CodeSniffer bersama dengan peraturan standard WordPress untuk memeriksa kod secara automatik.

Mengimplementasikan sokongan antarabangsa (internationalization)

Menambahkan sokongan antarabangsa (internationalization) untuk plugin anda sejak awal membolehkan pengguna di seluruh dunia menterjemahkannya ke dalam bahasa mereka dengan mudah. Ini boleh dicapai melalui langkah-langkah berikut:
1. Tetapkan dengan betul dalam ulasan di bahagian atas plugin. Text DomainDomain Path
2. Gunakan fungsi terjemahan WordPress di sekeliling semua rentetan teks yang perlu diterjemahkan, seperti… (), _e(), esc_html() dan sebagainya.
3. Gunakan alat seperti Poedit untuk menjana kandungan tersebut. .pot File-file templat, untuk digunakan oleh penterjemah. .po.mo Menterjemahkan dokumen.

Sebagai contoh, untuk menginternasionalisasi teks deskripsi halaman tetapan:

function mfp_section_basic_callback() {
    echo '<p>' . esc_html__( '在这里配置插件的基础选项。', 'my-first-plugin' ) . '</p>';
}

RINGKASAN

Artikel ini memulakan proses dari awal dan membimbing anda melalui keseluruhan proses pembuatan sebuah plugin WordPress yang asas tetapi mempunyai fungsi yang lengkap. Kita telah meliputi pelbagai aspek, daripada persiapan persekitaran, pembuatan fail plugin, penulisan maklumat header plugin, penggunaan action hooks dan filter hooks untuk menambahkan kandungan ke dalam artikel, hingga pembinaan antara muka pengurusan pentadbiran yang kompleks menggunakan API WordPress. Akhir sekali, kita juga telah membincangkan amalan pengoptimuman yang sangat penting dalam pembangunan plugin, seperti aspek keselamatan, standard pengkodan, dan pengantarabangsaan (internationalization).

Melalui amalan ini, anda sepatutnya sudah memahami proses utama dan alat asas dalam pembangunan plugin WordPress. Langkah seterusnya, anda boleh mencuba untuk membangunkan fungsi yang lebih kompleks, seperti mencipta jenis artikel yang khusus, mengatur jadual pangkalan data, meningkatkan interaksi menggunakan jQuery, atau menghantar plugin anda ke direktori plugin rasmi WordPress. Ingatlah, pembelajaran berterusan dan membaca kod sumber adalah cara terbaik untuk meningkatkan kemahiran pembangunan anda.

FAQ - Soalan Lazim

Bagaimana untuk membaiki (debug) plugin WordPress saya?

Langkah pertama adalah mengaktifkan mod pembangunan (debug mode) di WordPress. wp-config.php Dalam fail tersebut, akan… WP_DEBUG Konstanta ditetapkan kepada trueIni akan memaparkan ralat PHP, amaran, dan notis secara langsung pada halaman web.

Pada masa yang sama, ia juga boleh digunakan. error_log() Fungsi tersebut akan menulis maklumat pembaikan khusus ke dalam log ralat server, atau menggunakan alat pembangun (konsol dan tab rangkaian) dalam pelayar untuk membaiki masalah yang berkaitan dengan JavaScript dan permintaan AJAX. Bagi logik yang kompleks, menggunakan alat pembaikan profesional seperti Xdebug akan membuatkannya lebih mudah dan berkesan.

Adakah plugin saya akan bertentangan dengan tema atau plugin lain?

Ia mungkin berlaku, terutamanya apabila mengendalikan fungsi yang sama atau menggunakan nama variabel dan kelas global yang seragam. Untuk meminimalkan konflik, pastikan anda menambahkan prefiks yang unik kepada semua nama fungsi, kelas, variabel, dan pilihan anda. Sebagai contoh, jangan gunakan nama yang sama untuk item yang berbeza. add_footer_textBukan itu, tetapi menggunakan kaedah yang serupa… myplugin_add_footer_text Nama tersebut.

Sebelum membuat perubahan pada kandungan global (seperti variabel pertanyaan), lakukan pemeriksaan yang menyeluruh dan tetapkan syarat-syarat yang sesuai. Sebelum mengeluarkan plugin tersebut, uji ia sebanyak mungkin dalam pelbagai persekitaran dan kombinasi tema yang berbeza.

Apakah teknologi yang perlu saya pelajari untuk mengembangkan plugin yang canggih?

Selain asas PHP yang kukuh, anda juga perlu memahami dengan mendalam:
– JavaScript: Digunakan untuk interaksi pada bahagian hadapan (front end) dan pembangunan penyesuaian (customizers) untuk WordPress.
– jQuery: Walaupun WordPress sedang beralih ke rangka kerja JavaScript yang lebih moden, jQuery masih digunakan secara meluas.
REST API: Digunakan untuk mencipta aplikasi depan yang terpisah atau untuk berinteraksi dengan perkhidmatan luaran.
Pengetahuan tentang pangkalan data: Memahami struktur pangkalan data WordPress, dan cara melakukan pertanyaan khusus atau mencipta jadual baru dengan selamat.
Composer: Digunakan untuk menguruskan pakej pergantungan PHP.
Alat pembinaan: Seperti Webpack, yang digunakan untuk menguruskan kompilasi JavaScript dan SASS moden.

Bagaimana untuk mengeluarkan plugin saya ke direktori rasmi WordPress?

Pertama sekali, pastikan bahawa plugin anda sepenuhnya mematuhi garis panduan pembangunan plugin rasmi dan amalan terbaik keselamatan. Anda memerlukan akaun WordPress.org. Kemudian, hantar paket plugin yang telah dikompres ke bawah akaun tersebut untuk semakan. Proses semakan akan melibatkan pemeriksaan kualiti kod, keselamatan, dan lesen (yang harus serasi dengan GPL).

Jika plugin anda lulus pengesahan, ia akan ditambahkan ke dalam repositori SVN, dan anda boleh mengemas kini serta menyelenggara plugin tersebut melalui SVN. Selepas ia diterbitkan, pengguna boleh mencarinya, memasangnya, dan mengemas kini plugin tersebut terus melalui panel pentadbiran WordPress mereka.