Принцип работы 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().