add_action()

add_action( $tag, $function_to_add, $priority, $accepted_args );

Возвращает
Всегда true.

Прикрепляет указанную PHP функцию на указанный хук. Указанная функция сработает в момент события, которое в свою очередь запускается с помощью do_action().
Хук на который цепляется функция создается (инициализируется) с помощью функции do_action().

Действия (actions), в отличии от фильтров (add_filter()), нужны, чтобы выполнить какое-либо действие в нужный момент, тогда как фильтры передают и получают обратно данные, которые затем используются.

Неофициально: фильтры — это те же самые события, работают они точно также и их можно использовать как события (вместо add_filter() можно использовать функцию add_action() и наоборот). Например, можно не изменяя возвращать полученные данные, но помимо этого выполнять какую-нибудь операцию (например запись в БД). Правда это бывает нужно очень редко. Все места где нужно вмешаться в код движка, разработчики, пытаются предусмотреть и вставить в это место событие.

$tag(строка) (обязательный)

Название действия, к которому будем цеплять функцию.

$function_to_add(строка/замыкание) (обязательный)

Название функции, которая должна быть вызвана во время срабатывания действия, т.е. функция которую цепляем к хуку. Формат передачи функции — обычно строка, подробнее тут.

$priority(число)

Приоритет выполнения функции. Если на этот же хук «прицеплены» еще функции, то приоритет будет решать последовательность их выполнения. Меньше число — раньше выполняется, т.е. 10 будет выполняться раньше чем 20.
По умолчанию: 10

$accepted_args(число)

Число аргументов, которые принимает функция. Разумеется действие должно передавать это число аргументов.
По умолчанию: 1

Примеры

#1 Обычный хук

Будем отправлять письмо друзьям, при публикации нового поста:

add_action( 'publish_post', 'email_friends' );
function email_friends( $post_ID ){
   $friends = 'bob@example.org, susie@example.org';
   wp_mail( $friends, "sally's blog updated", 'I just put something on my blog: http://blog.example.com' );

   return $post_ID;
}

Точно так же можно зарегистрировать этот хук через add_filter():

add_filter( 'publish_post', 'email_friends' );

#2 Получение аргумента

do_action() передает аргумент в функцию и его можно использовать. В предыдущем примере это был ID поста, но мы его не использовали, потому он нам не был нужен. Теперь, пример того, как использовать передаваемый аргумент:

add_action( 'comment_id_not_found', 'echo_comment_id', 10, 1 );
function echo_comment_id( $comment_ID ){
   echo "I just received ". $comment_ID;
}

#3 Анонимная функция

В качестве колбэк функции можно передавать анонимную функцию, например:

add_action( 'wp_head', function(){
	echo 'something';
});

Такие анонимные функции не работают совместно с PHP ускорителями.

Также, важно знать, что такую анонимную функцию в дальнейшем невозможно будет удалить функцией remove_action().

#4 Добавление события из PHP класса

Если для события нужно использовать как-либо метод PHP класса, то во втором аргументе, вместо названия функции, нужно указать массив, где первым аргументом будет название класса (для static метода) или экземпляр класса (для public метода), а вторым название метода этого класса.

Экземпляр класса находится в переменной $this:

// Подключение метода класса за пределами класса
add_action( 'wp_head', array( 'My_Class', 'my_static_method' ) );

class My_Class {
	public function __construct() {
		// Подключение метода класса внутри класса
		add_action( 'save_post', array( $this, 'my_public_method' ) );

		add_action( 'save_post', array( __CLASS__, 'my_static_method' ) );
	}

	public function my_public_method( $post_id ) {
		// код функции
	}

	static function my_static_method( $post_id ) {
		// код функции
	}
}

Код add action: wp-includes/plugin.php WP 5.2.4

function add_action( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
	return add_filter( $tag, $function_to_add, $priority, $accepted_args );
}

источник: https://wp-kama.ru/function/add_action