Action, Filter и Hook в WordPress. Основные функции для использования.

ФункцииКомментариев нет

В этой статье будут описаны основне функции для работы с Action, Filter и Hook в WordPress. Данная статья предназначена для пользователей с опытом использования action и filter в вордпресс. Дадим основные определения и приступим к разбору функций.

Фильтры (filters) предназначены для «фильтрования» (изменения) любых данных перед тем как они будут выведены на странице или добавлены для хранения в базу данных. Это фильтрация спама, ошибок или просто ошибочного ввода в формах, откуда собственно и произошло английское название.

Действия (actions) предназначены для замены различных действий ядра вашими действиями (например изменения строки запроса к базе данных), в программировании такое изменение действий базового функционала ещё называют перегрузкой.

Зацепки (hook) это пользовательская функция разрабатываемая во время выполнения определенного action.(не отвечаю за данное определение, можете меня поправить)

Теперь перейдем непосредственно к функциям которые нам помогут в работе с Action, Filter и Hook. Функции описываемые в данной статье были взяты из кодекса wordpress: Plugin API

Actions Functions

global $wp_actions;

[Wordpress] $wp_actions — возвращает все выполненные действия.


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

$tag — (string) (Required) Имя действия(action), к которому будет подключена функция $function_to_add

$function_to_add — (callable) (Required) Имя функции которая будет вызвана на событие(action) $tag

$priority —  (int) (Optional) Используется для определения порядка, в котором функции, связанные с конкретным действием будут выполняться. Чем меньше число тем раньше будут выполнена функция. Функции с одинаковым приоритетом выполняются в том порядке, в котором они были добавлены к действию.  Значение по умолчанию: 10

$accepted_args — (int) (Optional) Число аргументов которые будут переданы в $function_to_add функцию. Значение по умолчанию: 1

[Wordpress] Функция добавляет hook(пользовательскую функцию) на событие(action) в момент выполнения события.


has_action( $tag, $function_to_check );

$tag — (string) (required) Имя hook(action) которого ищем

$function_to_check — (callback) (optional) Название action(действия) наличие функций у которого нужно проверить. По умолчанию: false

[Wordpress] Функция возвращает:

Когда проверяемая функция указана:

  • Число (приоритет) — если функция для проверки найдена у хука.
  • true — если указанная функция прикреплена к указанному хуку.
  • false — Если указанная функция не прикреплена к хуку.

Когда проверяемая функция не указана:

  • true — если у хука есть хоть одна прикрепленная функция.
  • false — Если у хука нет ни одной прикрепленной функции.

do_action ( $tag,  $arg );

$tag — (string) (Required) Имя для зацепки(hook)

$arg — (mixed) (Optional) Передаваемые аргументы (строка/массив/число/объект/логический)

[Wordpress] Функция создает hook(зацепку) для того что бы была возможность подключиться к этому месту через add_action.


do_action_ref_array( $tag, $args );

$tag — (string) (Required) Имя для зацепки(hook)

$arg — (array) (Required) Передаваемые аргументы (массив)

[Wordpress] Функция создает зацепку(hook) но в отличии от do_action() аргументы передаются только в виде массива.


did_action( $tag );

$tag — (string) (Required) Имя для зацепки(hook)

[Wordpress] Функция возвращает сколько раз была вызвано событие(action)  передаваемое в $tag


remove_action( $tag, $function_to_remove, $priority );

$tag — (string) (Required) Имя зацепки(hook) у которой есть функция, которую нужно отменить

$function_to_remove — (callable) (required) Функцию которую нужно отменить

$priority — (int) (optional) Приоритет функции. Указывается точно такой же, какой был указан в изначальной функции(то есть как у add_action отменяемой функции)

[Wordpress] Не выполняет функцию($function_to_remove) прикрепленную к указанному хуку ($tag). Если в $function_to_remove был передал массив с указанием класса и выполняемой функции, то для отмены мы также должны передать этот объект класса. Если мы передадим другой экземпляр класса для отмены функции то remove_action() — не сработает.


remove_all_actions( $tag, $priority );

$tag — (string) (Required) Имя зацепки(hook) у которой нужно отменить все прикрепленные функции.

$priority — (int) (optional) Приоритет функции.

[Wordpress] Функция удалить все зацепки(hook) из действия(action);


doing_action($action);

$action — (string) (optional) Имя действия(action) для проверки, если не указать то будут проверены все события которые выполняются

[Wordpress] Функция проверит вызывается ли пользовательская функция действием указанным в $action, в данный(текущий) момент. Действия могут вызывать одну и туже функцию, doing_action() — поможет определить каким событием вызвана функция. В случае есть проверяемое событие выполняется, функция вернет true.


Filter Functions

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

$tag — (string) (Required) Название фильтра, для которого будет срабатывать функция определенная в параметре $function_to_add.

$function_to_add(callable) (Required) Название функции которая будет срабатывать для фильтра указанного в $tag.

$priority — (int) (optional) Приоритет функции. По умолчанию 10.

$accepted_args — (int) (Optional) Число аргументов которые будут переданы в $function_to_add функцию. Значение по умолчанию: 1

[Wordpress] Функция добавляет пользовательскую функцию к хуку-фильтру указанному в $tag. То есть во время срабатывания $tag мы будем иметь возможность с помощью своей функции изменить значение. Это коренное отличие add_filter () от add_action (). С помощью action мы сможем только выполнить действие, а с помощью filter можно выполнить как действие так и изменить значение переменной.


has_filter( $tag, $function_to_check );

$tag — (string) (required) Имя filter(фильтра) которого ищем

$function_to_check — (callback) (optional) Название filter(фильтра) наличие функций у которого нужно проверить. По умолчанию: false

[Wordpress] Функция возвращает:

Когда проверяемая функция указана:

  • Число (приоритет) — если функция для проверки найдена у хука.
  • true — если указанная функция прикреплена к указанному хуку.
  • false — Если указанная функция не прикреплена к хуку.

Когда проверяемая функция не указана:

  • true — если у хука есть хоть одна прикрепленная функция.
  • false — Если у хука нет ни одной прикрепленной функции.

apply_filters ( $tag, $value, $var );

$tag — (string) (Required) Имя для фильтра(hook)

$value — (mixed) (Required) Передаваемые аргументы (строка/массив/число/объект/логический). Это значение можно будет отфильтровать пользовательской функцией.

$var —  (mixed) (Required) Дополнительные переменные которые можно будет передать и использовать в пользовательской функции.

[Wordpress] Функция создает filter(фильтр) для того что бы была возможность подключиться к этому месту через add_filter. При этом мы можем как произвести какие либо действия, так и изменить значение переменной  $value.


apply_filters_ref_array( $tag, $args );

$tag — (string) (Required) Имя для фильтра(hook).

$arg — (array) (Required) Передаваемые аргументы (массив).

[Wordpress] Функция создает фильтр(hook) но в отличии от apply_filters() аргументы передаются только в виде массива.


current_filter();

[Wordpress] Функция возвращает название текущего события или фильтра(hook). Таким образом можно определить каким событием вызвана пользовательская функция.


remove_filter( $tag, $function_to_remove, $priority );

$tag — (string) (Required) Имя фильтра(hook) у которой есть функция, которую нужно отменить

$function_to_remove — (callable) (required) Функцию которую нужно отменить

$priority — (int) (optional) Приоритет функции. Указывается точно такой же, какой был указан в изначальной функции (то есть как у apply_filtersотменяемой функции)

[Wordpress] Не выполняет функцию($function_to_remove) прикрепленную к указанному фильтру ($tag).


remove_all_filters( $tag, $priority );

$tag — (string) (Required) Имя фильтра(hook) у которой нужно отменить все прикрепленные функции.

$priority — (int) (optional) Приоритет функции.

[Wordpress] Функция отменит все пользовательские функции из фильтра.


doing_filter($filter);

$filter — (string) (optional) Имя фильтра(action) для проверки, если не указать то будут проверены все события которые выполняются

[Wordpress] Функция проверит вызывается ли пользовательская функция действием указанным в $folter, в данный(текущий) момент. Действия могут вызывать одну и туже функцию, doing_filter() — поможет определить каким событием вызвана функция. В случае есть проверяемое событие выполняется, функция вернет true.


 

Activation/Deactivation/Uninstall Functions

register_activation_hook( $file, $function );

$file — (string) (required) Путь до PHP файла, в котором находится функция обратного вызова, указанная во втором параметре $callback. Обычно используется волшебная константа PHP FILE.

$functio — (callable) (Required) Название функции обратного вызова. Для классов используйте массив: array( $this, ‘название_функции’ );

[Wordpress]  Регистрирует функцию, которая будет срабатывать во время активации плагина.


register_deactivation_hook($file, $function);

$file — (string) (required) Путь до главного файла плагина в рубрике wp-content/plugins. Можно указать полный путь. Обычно используется волшебная константа FILE.

$functio — (callable) (Required) Название функции обратного вызова (callback), которая будет запускаться при деактивации плагина.

[Wordpress] Регистрирует функцию, которая будет срабатывать после деактивации плагина.


register_uninstall_hook ( $file, $callback );

$file — (string) (required) Путь до PHP файла, в котором находится функция обратного вызова, указанная во втором параметре $callback. Обычно используется волшебная константа PHP FILE.

$callback — (callable) (Required) Название функции обратного вызова. Для классов используйте массив: array( $this, ‘название_функции’ );

[Wordpress] Регистрирует функцию, которая вызывается при удалении плагина, чтобы почистить все следы прибывания плагина в системе.

Рекомендуется отдавать предпочтение файлу unistall.php при удалении плагина, а не функции register_uninstall_hook().

http://wp-kama.ru/function/register_uninstall_hook


 

Источники:

https://codex.wordpress.org/ru:Plugin_API

http://wp-kama.ru/function/add_filter


Будь первым кто прокомментирует статью.

Добавить комментарий

Войти с помощью: