Panduan Pembangunan Plugin WooCommerce: Membina Fungsi E-dagang Kustom Anda dari Awal

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

Preparasi dan pembinaan persekitaran.

Sebelum anda mula menulis baris kod pertama, anda perlu menyediakan persekitaran pembangunan yang selamat dan profesional. Ini bukan sahaja dapat meningkatkan kecekapan pembangunan anda, tetapi juga memastikan proses pembangunan plugin anda berjalan dengan stabil dan boleh dipercayai.

Membina persekitaran pembangunan tempatan.

Kami sangat mengesyorkan penggunaan persekitaran pembangunan tempatan untuk pembangunan plugin. Ini membolehkan anda melakukan ujian dan penyelarasan tanpa mempengaruhi laman web dalam talian. Pilihan yang paling popular adalah menggunakan…LocalXAMPPMAMPIni termasuk persekitaran integrasi. Alat-alat ini akan mengkonfigurasi PHP, MySQL, dan pelayan web untuk anda secara automatik. Pastikan bahawa persekitaran anda memenuhi keperluan minimum untuk WooCommerce: versi PHP harus 7.4 atau lebih tinggi, versi MySQL harus 5.7 atau lebih tinggi, atau MariaDB 10.3 atau lebih tinggi. Setelah persekitaran siap, pasang WordPress yang baru dan aktifkan versi terkini plugin WooCommerce.

Mencipta fail asas untuk plugin

Pemalam anda akan bermula daripada sebuah fail utama. Dalam WordPress…wp-content/pluginsDalam direktori tersebut, buatlah sebuah folder baru, sebagai contoh…my-custom-woocommerceDalam folder ini, buat sebuah fail plugin utama, yang biasanya dinamakanmy-custom-woocommerce.phpFail ini merupakan pintu masuk untuk plugin tersebut, dan ulasan di bahagian atasnya sangat penting. Ia memberitahu WordPress bagaimana untuk mengenali plugin anda.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Pembangunan plugin WordPress: Membina plugin fungsi khusus dari awal hingga akhir.

<?php
/**
 * Plugin Name: My Custom WooCommerce Features
 * Plugin URI:  https://yourwebsite.com/
 * Description: 为WooCommerce添加自定义功能,包括产品额外字段和结账流程优化。
 * Version:     1.0.0
 * Author:      Your Name
 * License:     GPL v2 or later
 * Text Domain: my-custom-wc
 */

Komen kepala ini mendefinisikan maklumat yang dipaparkan oleh plugin dalam antaramuka pentadbiran WordPress. Sila pastikan untuk…Text DomainSetkan sebagai satu rentetan unik (unique string) untuk memudahkan proses terjemahan ke dalam bahasa-bahasa lain (internationalization) 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.

Memahami mekanisme pengembangan (extension) teras WooCommerce

Kekuatan WooCommerce terletak pada arkitekturnya yang sangat boleh disesuaikan, yang terutamanya dicapai melalui Action Hooks, Filter Hooks, dan penulisan semula templat (template rewriting).

Menggunakan Action Hooks dan Filter Hooks

Hook (Gantung) merupakan asas penting untuk pengembangan WordPress dan WooCommerce. Hook tindakan (Action Hooks) membenarkan anda “menyisipkan” kod anda sendiri pada masa-masa tertentu untuk melaksanakan fungsi tertentu. Sebagai contoh, anda boleh menggunakannya selepas pengguna membuat pesanan.woocommerce_thankyouHook untuk menghantar notifikasi yang diperibadikan. Hook penapisan pula membenarkan anda “mengubah” data, iaitu mengubah nilainya sebelum data tersebut digunakan atau dipaparkan. Sebagai contoh, gunakan…woocommerce_product_get_priceHook penapisan boleh menyesuaikan harga produk secara dinamik.

Gaya asas untuk menambahkan tindakan atau penapis adalah seperti berikut:

add_action( 'hook_name', 'your_callback_function', priority, accepted_args );
add_filter( 'hook_name', 'your_callback_function', priority, accepted_args );

Anda perlu mengubah teks yang diberikan ke dalam bahasa Melayu. Sila berikan teks tersebut supaya saya dapat membantu anda dengan terjemahannya.hook_nameGantikan dengan fungsi hook yang khusus, dan…your_callback_functionGantikan dengan nama fungsi yang anda sendiri tentukan.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Bermula dari kosong: Langkah-langkah asas dan amalan terbaik dalam pembangunan plugin WordPress

Menulis semula fail templat

Apabila perlu membuat perubahan pada penampilan laman web WooCommerce (seperti halaman produk atau keranjang beli-belah), adalah tidak betul untuk mengubah terus fail templat asas plugin tersebut, kerana perubahan tersebut akan ditimpa oleh kemas kini yang akan datang. Cara yang betul adalah dengan menggunakan ciri “template overriding” (penggantian templat). Anda perlu mengambil fail templat asal dari WooCommerce dan menggantikannya dengan versi yang telah diubahsuai.plugins/woocommerce/templates/Salin direktori tersebut ke dalam direktori tema anda.your-theme/woocommerce/Dalam laluan yang sesuai, kemudian ubah salinan tersebut. WooCommerce akan memuatkan fail templat daripada tema tersebut terlebih dahulu. Ini merupakan amalan standard untuk menyesuaikan penampilan dan susun atur sesuatu laman web.

Membangunkan modul fungsi khusus (custom function modules)

Sekarang, mari kita amalkan pembangunan plugin melalui dua keperluan yang biasa: menambahkan bidang khusus (custom fields) untuk produk, dan mengubah halaman pembayaran (checkout page).

Menambahkan bidang pengurusan untuk produk

Bayangkan anda ingin menambahkan lajur “Nombor Pengilang” untuk setiap produk. Pertama sekali, anda perlu memaparkan lajur ini pada halaman edit data produk di bahagian belakang (backend). Ini boleh dilakukan dengan…woocommerce_product_options_general_product_dataDilaksanakan menggunakan “action hooks”.

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%.
add_action( 'woocommerce_product_options_general_product_data', 'add_custom_product_field' );
function add_custom_product_field() {
    woocommerce_wp_text_input( array(
        'id'          => '_manufacturer_part_number',
        'label'       => __('制造商编号', 'my-custom-wc'),
        'placeholder' => '例如:MPN-12345',
        'desc_tip'    => true,
        'description' => __('产品的唯一制造商部件号。', 'my-custom-wc'),
    ) );
}

Selepas menambahkan bidang (fields), anda perlu menggunakannya…woocommerce_process_product_metaHook untuk menyimpan nilai yang dimasukkan oleh pengguna.

add_action( 'woocommerce_process_product_meta', 'save_custom_product_field' );
function save_custom_product_field( $post_id ) {
    $product = wc_get_product( $post_id );
    $custom_field_value = isset( $_POST['_manufacturer_part_number'] ) ? sanitize_text_field( $_POST['_manufacturer_part_number'] ) : '';
    $product->update_meta_data( '_manufacturer_part_number', $custom_field_value );
    $product->save();
}

Di sini, kami telah menggunakan objek CRUD dari WooCommerce (seperti…)WC_Product(Sila jangan mengedit nama-nama ini)update_meta_datasaveCara untuk menyimpan data, ini adalah kaedah yang disyorkan dalam pembangunan WooCommerce moden.

Menunjukkan medan khusus (custom fields) di bahagian hadapan (frontend)

Selepas data disimpan, anda mungkin ingin menunjukkan maklumat tersebut pada bahagian hadapan (frontend) halaman produk. Kita boleh menggunakan…woocommerce_product_additional_information_tab_titlewoocommerce_product_additional_information_tab_contentFilter hook, tambahkannya ke halaman tag “Additional Information”.

Diperoleh daripada WEB\nDisyorkan untuk membaca. Panduan Lengkap Pembangunan Plugin WordPress: Dari Permulaan Hingga Kemahiran Tinggi dalam Membina Plugin Berfungsi

add_filter( 'woocommerce_product_additional_information_tab_title', 'add_custom_field_to_tab_title' );
function add_custom_field_to_tab_title( $title ) {
    // 这里可以修改标签页标题,但我们主要用它来确保内容被加载
    return $title;
}

add_action( 'woocommerce_product_additional_information_tab_content', 'display_custom_field_on_product_page' );
function display_custom_field_on_product_page() {
    global $product;
    $mpn = $product-&gt;get_meta( '_manufacturer_part_number' );
    if ( $mpn ) {
        echo '<p><strong>' . esc_html__( '制造商编号:', 'my-custom-wc' ) . '</strong> '`. esc_html($mpn)`.'</p>';
    }
}

Proses pembayaran yang disesuaikan (Customized Payment Process)

Satu keperluan yang sering berlaku ialah menambahkan kotak pilihan (checkbox) yang boleh disesuaikan pada halaman pembayaran, seperti “Adakah anda ingin berlangganan buletin berita”. Kita boleh menggunakan…woocommerce_review_order_before_submitGantungkan bidang ini sebelum butang hantar.

add_action( 'woocommerce_review_order_before_submit', 'add_checkout_custom_checkbox' );
function add_checkout_custom_checkbox() {
    woocommerce_form_field( 'subscribe_to_newsletter', array(
        'type'  => 'checkbox',
        'class' => array('form-row-wide'),
        'label' => __('是的,我希望订阅产品新闻和优惠信息。', 'my-custom-wc'),
    ), false );
}

Kemudian, kita perlu mengesahkan dan memproses medan tersebut. Gunakan…woocommerce_checkout_processGunakan pengait (hook) untuk melakukan pengesahan.woocommerce_checkout_update_order_metaHook tersebut menyimpan data ke dalam pesanan (order).

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.
add_action( 'woocommerce_checkout_process', 'validate_custom_checkout_field' );
function validate_custom_checkout_field() {
    // 这里可以根据业务逻辑添加验证,例如在某些条件下必须勾选
    // if ( ! $_POST['subscribe_to_newsletter'] ) {
    //     wc_add_notice( __( '请勾选订阅框以继续。', 'my-custom-wc' ), 'error' );
    // }
}

add_action( 'woocommerce_checkout_update_order_meta', 'save_custom_checkout_field' );
function save_custom_checkout_field( $order_id ) {
    $value = isset( $_POST['subscribe_to_newsletter'] ) && $_POST['subscribe_to_newsletter'] ? 'yes' : 'no';
    update_post_meta( $order_id, '_subscribe_to_newsletter', sanitize_text_field( $value ) );
}

Ujian plugin, pengoptimuman, dan pengeluaran

Setelah pembangunan selesai, ujian yang menyeluruh adalah sangat penting kerana ia memastikan kestabilan dan kualiti plugin tersebut.

Melakukan ujian fungsi yang menyeluruh

Anda perlu mensimulasikan senario pengguna sebenar untuk melakukan ujian. Buat sebuah pesanan ujian dan pastikan bahawa bidang yang anda tambah (seperti nombor pengilang) dapat dipaparkan dengan betul pada halaman produk di bahagian frontend, dan butang pilihan (checkbox) yang ditambah semasa proses pembayaran dapat disimpan dengan betul ke dalam data pesanan. Pada halaman butiran pesanan di backend WordPress, anda sepatutnya dapat melihat maklumat khusus yang telah disimpan. Selain itu, pastikan ujian dilakukan untuk keserasian dengan fungsi-fungsi sedia ada dalam WooCommerce, plugin-popular lain (seperti gateway pembayaran, pengiraan kos penghantaran), serta pelbagai tema WordPress yang berbeza. Ujian responsif pada peranti yang berbeza (telefon bimbit, tablet, komputer desktop) juga merupakan langkah yang penting.

Pengoptimuman Prestasi dan Pertimbangan Keselamatan

Dari segi prestasi, pastikan kod anda hanya dimuat turun apabila perlu. Sebagai contoh, kod untuk pentadbiran latar belakang (management backend) sepatutnya hanya dimuat turun apabila diperlukan sahaja.is_admin()Kod yang berkaitan dengan bahagian hadapan (frontend) akan dimuatkan berdasarkan syarat-syarat tertentu, dan sebaliknya untuk kod yang berkaitan dengan bahagian belakang (backend). Bagi kueri pangkalan data yang mungkin dijalankan dengan kerap, pertimbangkan untuk menggunakan cache atau memastikan kueri tersebut telah dioptimumkan. Keselamatan adalah sangat penting: semua input dari pengguna mesti dibersihkan dan disahkan. Gunakan fungsi-fungsi yang disediakan oleh WordPress dan WooCommerce.sanitize_text_field(), esc_html(), wc_clean()Dan sebagainya. Semasa menghantar sebarang data dinamik ke bahagian hadapan (frontend), penting untuk melakukan proses “escaping” untuk mencegah serangan skrip merentas tapak (cross-site scripting attacks).

Menyiapkan untuk pelancaran akhir

Sebelum menerbitkan, pastikan kod anda mematuhi standard pengaturcaraan WordPress. Gunakan alat seperti…PHP_CodeSnifferLakukan pemeriksaan mengikut set peraturan standard WordPress. Perbaiki kod anda mengikut keperluan tersebut.readme.txtDokumen, yang memperincikan fungsi plugin, langkah-langkah pemasangan, soalan-soalan lazim dan tangkapan skrin penggunaan. Pertimbangkan untuk mengemukakan plugin anda ke direktori plugin WordPress rasmi, yang dapat meningkatkan keterlihatan dan kredibilitasnya secara signifikan. Sebelum mengemukakan, pastikan anda telah menyelesaikan semakan kod terakhir dan bersedia untuk terus memberikan kemaskini dan sokongan di masa hadapan.

RINGKASAN

Pembangunan plugin untuk WooCommerce adalah proses mengubah keperluan perniagaan tertentu menjadi ciri-ciri e-dagang yang berkuasa. Dengan mempelajari mekanisme pengembangan sistemnya secara teratur—seperti penggunaan “hooks”, penggantian template, dan operasi objek CRUD—pembangun dapat menyesuaikan setiap aspek dengan selamat dan cekap, bermula daripada pengurusan produk hingga proses pembayaran. Kunci kejayaan terletak pada pengikutan amalan terbaik: mengembangkan dalam persekitaran setempat yang selamat, menulis kod yang mudah diselenggara dan selamat, melakukan ujian yang menyeluruh dalam pelbagai senario, dan akhirnya menyediakan dokumentasi yang jelas dan profesional untuk pengguna potensial. Dengan menguasai kemahiran-kemahiran asas ini, anda akan dapat membina extension untuk WooCommerce yang bukan sahaja memenuhi keperluan, tetapi juga stabil, profesional, dan boleh diperluas, seterusnya meningkatkan daya saing laman web anda.

FAQ - Soalan Lazim

Untuk membangunkan plugin WooCommerce, apakah pengetahuan awal yang diperlukan?

Anda perlu memiliki pengetahuan asas dalam bahasa pengaturcaraan PHP dan memahami konsep pengaturcaraan berorientasikan objek. Pemahaman yang jelas tentang struktur asas WordPress (seperti hook, shortcodes, dan jenis artikel yang boleh disesuaikan) adalah sangat penting. Pengetahuan tentang HTML, CSS, dan JavaScript asas (terutamanya jQuery) akan membantu anda dalam menyesuaikan antaramuka pengguna (frontend).

Bagaimana untuk mencari hook khusus WooCommerce yang saya perlukan?

Dokumen pembangun rasmi WooCommerce merupakan titik permulaan yang terbaik untuk mencari fungsi tambahan (hooks), di mana terdapat indeks fungsi hook yang terperinci. Selain itu, anda juga boleh mencari secara langsung dalam kod sumber plugin WooCommerce.do_actionapply_filtersUntuk menemui semua hook yang tersedia, banyak komuniti pembangunan dan blog juga menyusun senarai hook yang sering digunakan dalam WooCommerce, yang boleh dijadikan rujukan yang cepat.

Saya telah mengubah suai fail plugin tersebut, tetapi mengapa perubahan tidak kelihatan pada laman web?

Ini biasanya disebabkan oleh masalah caching. Sila periksa dan kosongkan cache berikut secara berurutan: Cache objek WordPress (jika anda menggunakan perkhidmatan seperti Redis atau Memcached), plugin caching halaman (seperti W3 Total Cache, WP Rocket), cache pada pihak server (seperti OPcache), serta cache pada pelayar anda. Semasa proses pembangunan, disyorkan untuk mematikan semua mekanisme caching untuk memastikan perubahan pada kod dapat dilihat dengan segera.

Bagaimana untuk memastikan plugin buatan sendiri saya serasi dengan kemas kini masa depan WooCommerce?

Elakkan membuat perubahan pada fail asas WooCommerce adalah prinsip utama. Gunakan sepenuhnya hook, API, dan mekanisme penulisan semula templat yang disediakan oleh pihak pengeluar. Perhatikan dengan teliti log kemas kini WooCommerce, terutamanya notis “penyingkiran” (deprecation notices), yang akan memberitahu anda tentang fungsi atau kaedah mana yang akan dihapuskan dalam versi akan datang. Lakukan ujian keserasian secara berkala menggunakan versi Beta WooCommerce dalam persekitaran ujian, untuk mengesan masalah lebih awal.

Bolehkah saya membuat jadual pangkalan data khusus dalam plugin WooCommerce?

Boleh, tetapi biasanya bukan pilihan utama. WooCommerce dan WordPress menyediakan sistem penyimpanan metadata yang sangat kuat.wp_postmeta, wp_usermeta, wp_commentmetaUntuk kebanyakan keperluan pengembangan, ini sudah cukup. Hanya dalam kes di mana perlu menyimpan data yang sangat terstruktur, memerlukan kueri yang kompleks, dan jumlah data yang sangat besar, barulah pertimbangan untuk membuat jadual khusus (custom tables) perlu dibuat. Jika memang perlu, sila gunakannya dengan bijak.dbDelta()Fungsi ini bertujuan untuk memastikan proses penciptaan dan pengemaskinan struktur jadual dilakukan dengan selamat.