Rumah >Tutorial CMS >WordTekan >Cara alternatif untuk mencetuskan peristiwa di 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:
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
<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()
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,
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
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 __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>
<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>
Atas ialah kandungan terperinci Cara alternatif untuk mencetuskan peristiwa di WordPress. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!