add_action() — позволяет запустить функцию на месте указанного хука

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

add_action( $tag, $function_to_add, $priority = 10, $accepted_args = 1 );
$tag
(строка) Название хука-действия. Должно быть уникальным, то есть вы не можете использовать например wp_head.
$function_to_add
Укажите название функции в виде строки, класса в виде массива, либо анонимную функцию, если ваша версия PHP выше, чем 5.3.0, более подробно об этом я уже писал в описании функции add_filter().
$priority
(целое число) Приоритет выполнения. Чем он меньше, тем раньше выполнится функция, связанная с этим хуком.
$accepted_args
(целое число) Количество переменных, передаваемых в функцию.

Возвращает true в случае успешной регистрации хука, false — в противном случае.

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

В принципе не буду далеко ходить, приведу пример с официальной документации WordPress. Хук publish_post запускается сразу после публикации поста.

/**
 * При публикации нового поста, отправляем уведомления друзьям
 *
 * @param int $post_id ID опубликованного поста
 * @return int Post ID.
 */
function misha_notify_friends( $post_id ) {
    $friends = 'misha@example.org, igor@example.org';
    wp_mail( $friends, "Новый пост на блоге!", 'Я только что обновил блог, вот <a href="' . get_permalink( $post_id )  . '">ссылка на новый пост</a>');
 
    return $post_id;
}
add_action( 'publish_post', 'misha_notify_friends' );

Также в примере я использовал функции wp_mail() — для отправки емайлов и get_permalink() для получения ссылки на пост.

Другие примеры вы можете посмотреть на моём сайте на странице тега functions.php, либо в моём руководстве по фильтрам и хукам.

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

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

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

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

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

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