Где есть крючки?

Код:

<?php do_action('post_footer'); ?> 

Основываясь на некоторых чтениях , это, как представляется, вызывает действие с крюком. Итак, я просмотрел все PHP-файлы в Editor и я не нашел post_footer любом месте. Я также заметил, что он вызывает эти перехватчики в другом месте, поэтому было бы полезно знать, где они хранятся. Какие файлы хранятся в этих файлах?

То, что я искал, это add_action в каждом файле, чтобы обнаружить post_footer как один из параметров, но никогда не обнаружил ничего для post_footer как действия. Где еще будут эти крючки действий, если не в php-файлах?

Крючки / действия лучше воспринимаются как события.

Когда вы запустите этот код:

 add_action( 'post_footer', 'toms_footer_stuff' ); 

Вы говорите, что когда post_footer событие post_footer , запустите функцию toms_footer_stuff .

Эти функции имеют вид:

 add_action( name_of_action, php_callable ); 

Вызываемый PHP – это то, что можно назвать представленным как объект. Это может быть любой из них:

 add_action( 'post_footer', 'toms_footer_stuff' ); // a function add_action( 'post_footer', array( 'toms_class', 'toms_footer_stuff' ); // a static method on a class add_action( 'post_footer', array( $toms_class, 'toms_footer_stuff' ); // a method on an object add_action( 'post_footer', function() { echo "hello world"; } ); // an anonymous function add_action( 'post_footer', $toms_closure ); // a Closure 

Когда вы вызываете do_action('post_footer') , вы говорите, что событие post_footer происходит, вызовите все, что подключилось к нему. Нет функции post_footer для вызова (если вы не определяете ее самостоятельно, но это будет просто совпадение, она не будет работать, если вы не вызвали add_action ).

post_footer имеет больше общего с ключом в массиве.

Фильтры аналогичны, за исключением того, что они принимают значение в качестве своего первого аргумента функции и возвращают его.

Внутри они используют ту же систему, что и действия, так как эти 2 вызова должны делать то же самое:

 do_action( 'init' ); apply_filters( 'init', null ); // not recommended/tested 

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

В любом месте кода, который WordPress запускает для создания страницы, do_action() и do_filter() определяют крючок. Эти определения крюков могут быть в ядре, в плагинах или в темах.

Я предполагаю, что ваш do_action('post_footer') находится внутри темы, просто потому, что я не признаю его как стандартный крючок из ядра. Автор темы добавил, что там, чтобы авторы плагинов или дочерние темы могли использовать его, чтобы легко подключить их собственный код.

Несмотря на то, что есть ссылки на крючки в Интернете, иногда вам лучше всего копаться в базовом коде, чтобы найти те, которые вам нужны, поскольку они меняются со временем.