do_action() — создаёт хук (крючок), на месте которого в коде можно выполнить произвольную функцию

Принцип работы do_action() очень похож на принцип работы функции apply_filters() — всё начинается с кода, изменять который пользователю/разработчику сайта не стоит, и в этом коде есть место в котором потенциально будет нужно выполнить какой-то код. И в это место при помощи do_action() ставится хук, который позволяет это осуществить

do_action($tag, $arg = '', $arg2 = '', ... )
$tag
(строка) Название функции, которая будет запущена.
$arg
Любое количество переменных, которые будут переданы в эту функцию.

Функция ничего не возвращает.

Пример использования do_action()

Предположим, что вы пишете свой плагин, и в этом плагине допустим есть место, в котором возможно потребуется выполнение дополнительного кода, скажем так — кому-то может потребуется, а кому-то нет.

В это место кода вы вставляете функцию do_action()

do_action( 'misha_action' );

Теперь, при помощи уже функции add_action() где-либо в другом месте можно запустить привязанную к этому хуку функцию, например в файле functions.php текущей темы, например.

add_action( 'misha_action', 'misha_function_1' );
 
function misha_function_1() {
	echo 'Привет';
}

Также вы можете передавать несколько параметров

Тогда наш код примет вид:

do_action( 'misha_action', $param1, $param2, $param3 );

И

add_action( 'misha_action', 'misha_function_1', 10, 3 ); // 3 - количество параметров
 
function misha_function_1( $param1, $param2, $param3 ) {
 
	if( $param1 == $param3 )
		echo 'Привет';
	else
		echo 'Привет' . $param1 . $param2 . $param3;
 
}

Подробнее — в документации функции add_action().

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Привет, ну либо через Javascript, либо через save_post хук, скорее второе.

  • Дмитрий: Миша, а возможно ли задать условие, что если существует meta_key, то соответствующая таксономия будет нажата в метабоксе...

  • Дмитрий: Спасибо за подсказку. Получилось передать сразу нужный meta_key через value в hidden input.

  • Артем: Вот про сей хук я запамятовал)) Спасибо!

  • Миша: Думаю, что $mail_2 - пустая переменная по той простой причине, что $post->ID не существует. Глобальная переменная $po...