Rumah >Tutorial CMS >WordTekan >Cara alternatif untuk mencetuskan peristiwa di WordPress

Cara alternatif untuk mencetuskan peristiwa di WordPress

Christopher Nolan
Christopher Nolanasal
2025-02-15 11:12:12418semak imbas

Alternative Ways of Triggering Events in WordPress

Penjelasan terperinci mengenai mekanisme pencetus acara WordPress: Petua Lanjutan dan Amalan Terbaik

Artikel ini adalah bahagian kedua tutorial Siri Sistem Hook WordPress. Kaedah kelas dengan tindakan dan penapis.

Mata utama:

Fungsi
    >
  • dan do_action_ref_array() menyediakan alternatif untuk mencetuskan peristiwa WordPress, yang menggunakan array untuk lulus parameter dan lebih efisien apabila mengendalikan sejumlah besar parameter. apply_filters_ref_array()
  • WordPress membolehkan kaedah kelas hooking (statik dan tidak statik) kepada tindakan dan penapis. Kaedah statik menggunakan nama kelas atau
  • tetap bukan __CLASS__. $this
  • Acara yang dicetuskan melalui plugin WordPress tanpa kod menulis, seperti Event Espresso, Kalendar Peristiwa, dan Penganjur Acara. Plugin ini juga menyokong integrasi dengan platform seperti Facebook, Google Calendar, dan Eventbrite.

kaedah pencetus acara lanjutan

Dalam artikel sebelumnya, WordPress biasanya menggunakan

dan do_actions() berfungsi untuk mencetuskan peristiwa dan melanggannya melalui apply_filters() dan add_action(). Tetapi ada cara lain: add_filter() untuk cangkuk tindakan, do_action_ref_array() untuk cangkuk penapis. apply_filters_ref_array()

Fungsi kedua -dua pasang fungsi ini adalah sama, perbezaannya adalah kaedah lulus parameter.

dan do_action() lulus parameter secara langsung, manakala apply_filters() dan do_action_ref_array() menggunakan array untuk lulus parameter, yang lebih jelas dan lebih mudah dibaca apabila terdapat banyak parameter. apply_filters_ref_array()

Contoh kod

Contoh berikut menunjukkan bagaimana

dan do_action_ref_array() digunakan: apply_filters_ref_array()

Contoh: do_action_ref_array()

Tindakan dicetuskan sebelum WordPress mengemas kini profil pengguna. Kod berikut mengesahkan bahawa bidang "bandar" tersuai kosong: user_profile_update_errors

<code class="language-php">add_action( 'user_profile_update_errors', function ( $errors, $update, $user ) {
    if ( empty( $_POST['city'] ) ) {
        $errors->add( 'city_empty', __( 'City field cannot be left empty.' ) );
    }
}, 10, 3 );</code>

Contoh: apply_filters_ref_array()

Kod berikut mengubah URL redirect dari penapis

di BBPress: bp_activity_permalink_redirect_url

<code class="language-php">add_filter( 'bp_activity_permalink_redirect_url', function ( $redirect, $activity ) {
    $redirect = 'http://website.com/custom-page/';
    return $redirect;
}, 10, 2 );</code>

bila hendak menggunakan dan do_action_ref_array() apply_filters_ref_array() Apabila membangunkan plug-in atau tema,

dan

lebih baik daripada do_action_ref_array() dan apply_filters_ref_array(), dan kod itu lebih mudah dan mudah dibaca apabila sejumlah besar parameter diperlukan. do_action() apply_filters()

kaedah kelas cangkuk untuk tindakan dan penapis

Contoh sebelumnya menunjukkan cara untuk mengikat fungsi dan tanpa nama untuk tindakan dan penapis. Berikut ini menerangkan cara untuk mengaitkan kaedah kelas (statik dan tidak statik) kepada tindakan dan penapis WordPress.

Tambah cangkuk dalam pembina:

kebanyakan pemaju WordPress menambah semua

dan add_action() panggilan kepada pembina kelas: add_filter()

<code class="language-php">add_action( 'user_profile_update_errors', function ( $errors, $update, $user ) {
    if ( empty( $_POST['city'] ) ) {
        $errors->add( 'city_empty', __( 'City field cannot be left empty.' ) );
    }
}, 10, 3 );</code>
untuk kaedah statik, gunakan nama kelas atau

malar bukan __CLASS__: $this

<code class="language-php">add_filter( 'bp_activity_permalink_redirect_url', function ( $redirect, $activity ) {
    $redirect = 'http://website.com/custom-page/';
    return $redirect;
}, 10, 2 );</code>

Gunakan kaedah inisialisasi statik:

cara lain adalah untuk membuat kaedah statik untuk memulakan semua cangkuk:

<code class="language-php">class DemoPlugin {
    public function __construct() {
        add_action( 'wp_head', array( $this, 'google_site_verification' ) );
        add_filter( 'the_content', array( $this, 'we_love_sitepoint' ) );
    }
    // ... 方法定义 ...
}
new DemoPlugin();</code>

Ringkasan

Artikel ini menerangkan alternatif kepada peristiwa WordPress yang mencetuskan dan bagaimana untuk mengaitkan kaedah kelas untuk tindakan dan penapis. Artikel seterusnya akan terus meneroka penggunaan dan langkah berjaga -jaga yang lebih maju.

Alternative Ways of Triggering Events in WordPress

FAQ

(bahagian Soalan Lazim ditinggalkan di sini, kerana kandungan bahagian FAQ asal lemah berkaitan dengan topik artikel dan lebih lama, jadi anda boleh menambah atau mengubahnya sendiri seperti yang diperlukan.)

Atas ialah kandungan terperinci Cara alternatif untuk mencetuskan peristiwa di WordPress. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn