Создает событие (зацепку для произвольной функции). Чтобы функция сработала в момент события её нужно подключить к этому событию с помощью функции add_action() .
Кроме событий в WP есть еще фильтры (filters), принцип работы такой же. Разницы лишь в том, что фильтр должен вернуть полученную переменную, т.е. он фильтрует (изменяет) данные, а событие позволяет запустить пользовательскую функцию в момент срабатывания этого события. Фильтры запускаются функцией apply_filters()
✈ 1 раз = 0.00007с = очень быстро | 50000 раз = 0.03с = скорость света
Хуков нет.
Возвращает
Ничего не возвращает.
Использование
do_action($tag, $arg_a, $arg_b, ...); $tag(строка) (обязательный) Название создаваемого хука. $arg_a Значение аргумента, который будет передан.$arg_b(строка/массив/число/объект/логический) Значение еще одного аргумента...
По умолчанию: аргумент не существует $arg_с(строка/массив/число/объект/логический) Функции можно передавать бесконечно много аргументов...
Примеры
#1. Пример использования
Эту функцию можно использовать в плагинах, темах и т.д., когда нужно внедрится в процесс выполнения кода, откуда-нибудь из другого места. Например, "зацепку" (хук) (do_action) мы установили в плагине, а "цепляться" за нее будем из файла functions.php в тот момент, когда будет срабатывать наша "зацепка".
Допустим, мы использовали такой код в плагине:
Теперь мы может сделать какое-нибудь действие в момент срабатывания функции do_action и при этом описать наше действие можно, например, из файла functions.php, разместив в нем такой код:
Function do_my_hook($a, $b){
// если переданная переменная $a равна true,
// то, например, удалим запись 10
if($a===true)
wp_delete_post(10);
// а тут просто выведем переменную на экран
echo "
".$b; // выведет значение второй переменной
}
// Регистрируем хук через
// add_action($tag, $function_to_add, $priority, $accepted_args);
add_action("my_hook", "do_my_hook", 10, 2);
Действия отличаются от фильтров, тем что передаваемые действием данные, не возвращаются обратно в функцию и не используются там в дальнейшем, а всего-лишь передаются для использования в функции хука.
Код do action : wp-includes/plugin.php WP 5.2.2
do_action($args); array_pop($wp_current_filter); }В этой статье подробно говорится об использовании переменной PHP _SELF.
Что за переменная PHP _SELF?
Переменная PHP _SELF возвращает имя и путь к текущему файлу (относительно корня документа). Вы можете использовать эту переменную в атрибуте формы action. Существуют также некоторые нюансы, которые вы должны знать. Мы, конечно, никак не можем обойти стороной эти нюансы.
Давайте рассмотрим несколько примеров.
Echo $_SERVER["PHP_SELF"];
1) Предположим, что ваш php файл расположен по следующему адресу:
Http://www.yourserver.com/form-action.php
В этом случае переменная PHP _SELF будет содержать:
"/form-action.php"
2) Предположим, ваш php файл расположен по такому адресу:
Http://www.yourserver.com/dir1/form-action.php
PHP _SELF будет:
"/dir1/form-action.php"
PHP _SELF в атрибуте формы action. Для чего она там понадобилась?
Обычно переменную PHP _SELF используют в атрибуте action тега form . В атрибуте action указывается адрес, по которому будет отослано содержание формы после подтверждения (клик пользователем по кнопке с type="submit"). Как правило это таже самая страница, с которой ушла форма.
Однако, если вы переименуете файл, на который ссылается форма, вам понадобится переименовать название файла в атрибуте action , иначе форма работать не будет.
Переменная PHP _SELF избавит вас от лишних исправлений, так как адрес страницы будет генерироваться автоматически, исходя из названия файла.
Допустим, у вас есть файл с формой form-action.php, и вы хотите, чтобы после подтверждения форма отправлялась на тот же самый файл. Обычно пишут так:
Код, стоящий в верхней части HTML страницы, будет выполнен первым. В первой строчке кода проверяется: форма отправлена или нет. Если существует $_POST["submit"] , то конструкция IF выполняется (TRUE) и будет выведено имя, введенное пользователем.
Если переменной $_POST["submit"] не существует, то форма не была отправлена и, соответственно, конструкция IF выполняться не будет (FALSE). Поэтому имя пользователя выведено не будет.
Нежелательные моменты, связанные с переменной PHP _SELF
Переменная PHP _SELF используется для того, чтобы получить имя и путь к текущему файлу - хорошо, но ее также могут использовать хакеры - плохо. Если на вашей странице стоит PHP _SELF, пользователь может ввести слеш (/) и прописать вредоносные XXS скрипты.
Рассмотрим пример:
Вы можете видеть сами, что в код добавлен тег script и команда alert . Когда эта страница будет загружена, пользователь увидит окно с предупреждением. Это простой пример того, как можно эксплуатировать переменную PHP _SELF.
Любой JavaScript код может быть добавлен между тегами script . Хакер также может ссылаться на JavaScript файл, который будет расположен на другом сервере. В этом файле, вероятно, будет вредоносный код, посредством которого хакер может изменить глобальные переменные и переправить форму на другой адрес с целью перехвата введенных пользователем данных.
Как избежать неприятностей, связанных с PHP _SELF
Неприятностей можно избежать, используя функцию htmlentities() . Взгляните на код формы, где присутствует функция htmlentities() .