Pertanyaan ini mungkin salah, saya tidak yakin tentang itu. Karena saya tidak jelas tentang ini.
Saya tahu add_action
ini digunakan untuk menghubungkan fungsi kita ke fungsi yang ditentukan. Misalnya add_action('wp_head'.'myfunc');
sekarang kode apa yang pernah ada myfunc
akan dieksekusi di wp_head()
. Ini jelas, tetapi saya ragu do_action
apa fungsinya?
Saya pikir ini digunakan untuk membuat kait kita sendiri seperti kait yang sudah tersedia (wp_head, wp_footer, .. dll). Jika saya benar, adakah yang bisa menunjukkan kepada saya jawaban yang mudah dimengerti dengan contoh sederhana.
Saya telah mencoba perbedaan di internet tetapi semua menunjuk pada perbedaan antara add_action dan add_filter. Saya tidak ingin pergi ke sana karena pertama saya ingin mengklarifikasi ini dan kemudian saya akan pindah ke sana.
Adakah yang bisa membantu saya?
Sunting setelah POST Pertanyaan
function custom_register()
{
echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';
}
do_action('custom');
add_action('custom','custom_register');
Saya mencoba ini di plugin tetapi saya tidak mendapatkan pesan peringatan.
Tetapi ketika saya menghubungkan fungsi yang sama dengan wp_head
itu berfungsi dengan baik
/******************working****************/
add_action('wp_head','custom_register');
do_action('custom');
setelah mendaftarkan panggilan balik? Dan pastikan jQuery dimuat.wp_head
itu berfungsi dengan baik tetapi tidak dengancustom
Jawaban:
Gunakan
do_action( 'unique_name' )
untuk membuat tindakan Anda sendiri.Anda dapat menggunakannya untuk menawarkan API untuk plugin Anda , sehingga plugin lain dapat mendaftarkan panggilan balik untuk tindakan kustom Anda. Contoh: Apakah saya perlu memanggil do_action di plugin saya?
Tetapi Anda juga dapat menggunakan tindakan khusus (atau filter) dalam suatu tema. Contoh: Cara praktik terbaik untuk mengimplementasikan bagian khusus ke dalam tema WordPress
Dan Anda dapat menggabungkan keduanya untuk membuat plugin dan tema bekerja bersama. Contoh: Bagaimana membuat metode dari plugin tersedia dalam tema?
Ringkasan:
add_action( 'foo' )
mendaftarkan panggilan balik,do_action( 'foo' )
mengeksekusi panggilan balik yang terdaftar itu.sumber
Ini adalah tebakan saya, jadi jika Anda lebih tahu, beri komentar agar saya dapat memperbarui tebakan saya.
Kode plugin Anda dieksekusi sebelumnya
wp_head()
(yang dapat kami asumsikan akan meminta tindakan yang ditambahkan ke dalamnya). Ketika Andaadd_action('wp_head','custom_register')
, Anda memberi tahu PHP bahwa kapan (di masa depan)do_action('wp_head')
dipanggil, untuk meneleponcustom_register()
juga. Hal yang sama berlaku untuk panggilan Anda,add_action('custom','custom_register')
tetapi seperti yang Anda lihat dalam kode Anda, panggilan kedo_action('custom')
telah dilakukan, dan ketika dipanggil, tidak ada (belum) tindakan ditambahkan ke dalamnya. Inilah sebabnya mengapa Toscho bertanya apa yang terjadi ketika Anda menelepondo_action('custom')
setelah Anda mendaftarkan panggilan balik. Jawaban Anda tentang ujung belakang dan ujung depan bersifat ambigu. Jika Anda menukar dua baris terakhir dalam kode berikut, saya pikir itu akan berhasil:sumber
do_action
: Mendaftarkan kait tindakan sementaraadd_action
: menambahkan fungsi panggilan balik ke kait terdaftar.Contoh
Pertimbangkan Anda ingin mencetak sesuatu sebelum bilah sisi di templat Anda.
index.php
via<?php add_action('bp_sidebar_left'); ?>
.functions.php
file Anda, Anda dapat menambahkan fungsi callback ke hook itu untuk mencetak sesuatu yang Anda inginkan.add_action('bp_sidebar_left', 'bp_sidebar_left_cb'); function bp_sidebar_left_cb() { echo 'Hello World !'; }
sumber
Anda harus menggunakan seperti di bawah ini:
sumber