Ваш путь: Главная » Сниппеты, хаки, функции » текущая страница
заказать разработку или сопровождение вашего сайта/блога

написано: — 
отредактировано: 2020-07-11
издатель: в теме: Сниппеты, хаки, функции пост видели: 142
Запросто с WordPress — создание сайтов ATs media

Что правильнее использовать — add_action или функцию — function

Что правильнее использовать — add_action или функцию, например, для вывода (вызова) некой информации..? Следует начать с того, что экшн ( add_action ) тоже функция. И вообще, наверное несколько неправильная постановка вопроса «что правильнее использовать…»? Наши действия в полной зависимости от наших требований.

Записи этой заметки послужило письмо одного из моих подписчиков, тот, в восторженной форме, сообщал мне об одном своём открытии… именно он и спросил, что лучше использовать для вывода рекламных блоков на своем сайте: add_action или функцию — function? Потому как он обнаружил некоторые особенности, если использовать фильтры.

Но давайте по порядочку…


 

 

 

 

 

 

 

 

Работа и использование add_action

 

 

 

 

Начну с того, что поясню об открытии подписчика:

 

 

У него на сайте, как оказалось, присутствовал баг. Не работал плагин Сontact-form-7, а именно не отправлялись письма, сообщалось что отправка невозможна (он подозревал, что ошибка в его шаблоне)!

 

…начал копать: отключать по очередности функции в файле functions.php, чтобы таким образом выявить причину. Однако, оказалось, что это не так-то и просто. При отключении (комментрировании кода функции) сайт просто-напросто падал белым экраном…

 

 

Совершенно верно! если в файлах шаблона инициализируется вызов функции, то при отключении, скажем так, самой функции в functions.php —  сайт упадет!!

 

Нужно закомментровать вызов функции в самом файле шаблона — к примеру, в category.php и пр, чтобы проверить и чтобы сайт не упал.

 

 

Это и вызвало трудности… при отыскивании ошибки.

 

 

 

…им было совершенно верно замечено, что, если закомментировать фильтр add_action и при этом в файлах шаблона установлены крючки (хуки), то сайт будет продолжать работать как ни в чём не бывал.

 

 

 

 

к оглавлению

add_action запускает функцию в месте указанного хука

 

 

 

 

add_action работает в связке с функцией do_action() — (или наоборот, кому как угодно, по сути сегодня это не важно)

 

 

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

 

 

Поэтому, например, при продумывании тех мест, в которых предположительно будет хук (вызов) функции блоков рекламы, для начала устанавливаются эти самые хуки. А уж после к ним можно привязывать какую-то требуемую информацию.

 

Как понимаете, ПУСТОЙ хук не приведет к поломке сайта. Вот это обстоятельство и выяснил для себя мой подписчик. Это замечательное  отличие экшн от простой функции его порадовало!..

 

 

Итак, самый простейший хук в файлах шаблона указывается так (возможно использовать в сайдбаре — виджетах, однако, для текстовых виджетов должно быть разрешение отработки шорткодов и php, по ссылке всё чётко, как это сделать, описано):

 

 

 

do_action( 'my_sydy' );

 

 

 

my_saydy — имя хука должно быть непременно уникальным!! также нельзя использовать уже используемые хуки Вордпресс. Такие, например, как wp_head или wp_footer — словом, придумывайте заковыристые и понятные для себя: например, добавляйте часть имени домена как составляющую.

 

 

 

 

к оглавлению

как использовать — add_action для вывода (вызова) на экран информации

 

 

 

 

Создадим простую функцию и свяжем с  add_action:

 

 

add_action( 'my_sydy', 'add_my_syte_sydy' );
function add_my_syte_sydy() {
// здесь информация... код и пр.
}

 

 

Напоминаю, my_sydy — хук  должен быть уникальным!!


 

 

…вызываем:

 

 

<?php

do_action( 'my_sydy' );

?>

 

 

 

Таким образом, при последующем использовании, возможно к указанному хуку привязать и ещё какую-то дополнительную информацию…

 

 

Создадим ещё новую функцию:

 

 

add_action( 'my2_sydy', 'add_mih_ss_syte' );

function add_mih_ss_syte() {

    echo 'например, код рекламы';

        if (is_super_admin( $user_ID )) {

    echo 'пояснения для админа';

} }

 

 

выполняем в шаблоне:

 

 

do_action( 'my2_sydy' );

 

 

 

Что имеем:

 

Выведет на экран информацию для читателей и пояснения для админа сайта.

Как видите используем условие (условные теги WordPress и условные теги WooCommerce): только для администратора.

Это всего-лишь пример.

 

 

Что интересно (ниже подробный пример шаблона использования add_action), при выводе дополнительной информации — к примеру, блок рекламы Google и Яндекс — возможно играть приоритетами, то есть указать, какой блок выводится первым, а какой вторым:

 

 

add_action( 'my2_sydy', 'add_my_ss_syte', 10 );
function add_my_ss_syte() {
инфа;
}

 

 

add_action( 'my2_sydy', 'add_my2_ss_syte', 20 );
function add_my2_ss_syte() {
инфа 2;
}

 

 

 

То есть, если к одному и тому же хуку будет и ещё какая-то экшн привязка, приоритеты отрабатывают так:

 

 

10 — выполнится раньше, а 20 — позже…

 

 

 

Также, например, если создать произвольную страницу настроек в своей теме, то выполнение/НЕ выполнение отработки вызова хука легко и просто связать с чекбоксами. …или как-то что-то ещё организовать… — всё от наших требований и желаний.

 

 

 

 

небольшое отступление:

 

 

к оглавлению

принципиально add_action похоже с организацией шорткодов — add_shortcode

 

 

 

 

Функция шорткода создаётся (определяется) таким примерно образом:

 

 

 

add_shortcode('name_name', 'mihalica_name');

function mihalica_name() {

// здесь информация... код и пр.

}

 

 

 

вызов отработки информации шорткода в файлах шаблона (в виджете):

 

 

<?php echo do_shortcode( '[name_name]' ); ?>

 

 

 

 

к оглавлению

шаблон использования add_action

 

 

 

 

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

 

 

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

 

Имя (или название) действия, к которому прицепляется функция (или — событие).

 

 

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

 

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

 

 

$priority — (число)

 

Приоритет очередности выполнения функций. Если на текущий хук прицеплены и еще какие-то функции, тогда их приоритетность выполнения решается числовым значением. Как и говорил выше: чем меньше число, тем более раннее выполнение.

 

По умолчанию: 10

 

 

$accepted_args — (число)

 

Число аргументов, которые принимает функция. …действие должно передавать число аргументов.

 

По умолчанию: 1

 

 

 

 

Код экшн функции находится по такому пути в ядре WP:

 

wp-includes/plugin.php

 

 

 

 

Как эпилог:

 

 

Таким образом выясняется, что вопрос «что правильнее использовать.?.» — несколько неверен!

Использования того или иного варианта, при вызове информации на лицевой стороне сайта, в прямой зависимости от наших желаний и требований.

 

 


mihalica.ru

 

 


...вопросы в комментариях - помогу, в чём дюжу...
mihalica.ru !


Михаил ATs - владелец блога запросто с Вордпресс - в сети нтернет давным-давно...

...веб разработчик студии ATs media: помогу в создании, раскрутке, развитии и целенаправленном сопровождении твоего ресурса в сети... - заказы, вопросы... разработка...




Нажатия на кнопочки определяют Ваше высокое гражданское сознание
Удачи в работе и творчестве..!
Статьи по теме:


Поделитесь соображениями: Ваши мысли очень важны!

Внимание! Обязательные поля помечены *

  отныне доступен плагин: ats privacy policy ©

 необходимо принять правила конфиденциальности