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:
Fungsido_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()
__CLASS__
. $this
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()
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
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 );
Contoh: apply_filters_ref_array()
di BBPress: bp_activity_permalink_redirect_url
add_filter( 'bp_activity_permalink_redirect_url', function ( $redirect, $activity ) { $redirect = 'http://website.com/custom-page/'; return $redirect; }, 10, 2 );
bila hendak menggunakan dan do_action_ref_array()
apply_filters_ref_array()
Apabila membangunkan plug-in atau tema,
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()
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: dan malar bukan Gunakan kaedah inisialisasi statik:
Ringkasan
Atas ialah kandungan terperinci Cara alternatif untuk mencetuskan peristiwa di WordPress. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!add_action()
panggilan kepada pembina kelas: add_filter()
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 );
__CLASS__
: $this
add_filter( 'bp_activity_permalink_redirect_url', function ( $redirect, $activity ) {
$redirect = 'http://website.com/custom-page/';
return $redirect;
}, 10, 2 );
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();