Этот вопрос может быть неправильным, я не уверен в этом. Потому что я не совсем уверен в этом.
Я знаю, что add_action
он используется для привязки нашей функции к указанной функции. Например, add_action('wp_head'.'myfunc');
теперь любой код в myfunc
будет выполняться в wp_head()
. Это понятно, но у меня есть сомнения в do_action
том, что он делает?
Я думаю, что он используется для создания наших собственных хуков, таких как уже доступные хуки (wp_head, wp_footer и т. Д.). Если я прав, может кто-нибудь показать мне простой понятный ответ на простом примере.
Я пробовал разницу в Интернете, но все указывают на разницу между add_action и add_filter. Я не хочу туда идти, потому что сначала я хочу уточнить это, а затем я перееду туда.
Кто-нибудь может мне помочь?
РЕДАКТИРОВАТЬ после вопроса POST
function custom_register()
{
echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';
}
do_action('custom');
add_action('custom','custom_register');
Я попробовал это в плагине, но я не получил предупреждение.
Но когда я подключаю ту же функцию, wp_head
то она работает нормально
/******************working****************/
add_action('wp_head','custom_register');
do_action('custom');
после регистрации обратного вызова? И убедитесь, что jQuery загружен.wp_head
она работает нормально, но не сcustom
Ответы:
Используйте
do_action( 'unique_name' )
для создания своих собственных действий.Вы можете использовать это, чтобы предложить API для вашего плагина , чтобы другие плагины могли регистрировать обратные вызовы для ваших пользовательских действий. Пример: мне нужно вызвать do_action в моем плагине?
Но вы также можете использовать настраиваемые действия (или фильтры) в теме. Пример: лучший способ внедрения пользовательских разделов в тему WordPress
И вы можете комбинировать и плагин, и тему, работающую вместе. Пример: Как сделать метод из плагина доступным в теме?
Сводка:
add_action( 'foo' )
регистрирует обратный вызов,do_action( 'foo' )
выполняет тот зарегистрированный обратный вызов.источник
Это мое предположение, поэтому, если вы знаете лучше, пожалуйста, оставьте комментарий, чтобы я мог обновить свое предположение.
Ваш код плагина выполняется ранее
wp_head()
(который, как мы можем предположить, вызовет добавленные к нему действия). Когда выadd_action('wp_head','custom_register')
, вы говорите PHP, что, когда (в будущем)do_action('wp_head')
вызывается, также вызыватьcustom_register()
. То же самое относится и к вашему вызову,add_action('custom','custom_register')
но, как вы видите в своем коде, вызовdo_action('custom')
уже был сделан, и когда он был вызван, к нему еще не было добавлено никакого действия. Вот почему Тошо спросил, что происходит, когда вы звонитеdo_action('custom')
после регистрации обратного вызова. Ваш ответ о заднем и переднем концах неоднозначен. Если вы поменяете местами последние две строки в следующем коде, я думаю, что это сработает:источник
do_action
: Регистрирует ловушку действия whileadd_action
: добавляет функцию обратного вызова к зарегистрированной ловушке.пример
Учтите, что вы хотели напечатать что-то перед боковой панелью в вашем шаблоне.
index.php
через<?php add_action('bp_sidebar_left'); ?>
.functions.php
файле вы можете добавить функцию обратного вызова в этот хук, чтобы напечатать что-то, что вы хотите.add_action('bp_sidebar_left', 'bp_sidebar_left_cb'); function bp_sidebar_left_cb() { echo 'Hello World !'; }
источник
Вы должны использовать, как показано ниже:
источник