Я хочу знать, является ли это хорошей практикой в соответствии с темой WordPress или разработкой плагина.
add_action('init','all_my_hooks');
function all_my_hooks(){
// some initialization stuff here and then
add_action('admin_init',-----);
add_action('admin_menu',----);
// more like so
}
Спасибо
hooks
customization
init
admin-init
atinder
источник
источник
wp_loaded
и MS информация.Я не вижу больших преимуществ этой практики по следующим причинам:
Ваши функции обратного вызова не вызываются при регистрации
Функции
add_action
иadd_filter
добавляют только запись в глобальную переменную,$wp_filter
которая содержит все фильтры и действия. Смотрите источник . Это не вызывает вашу функцию. Ваш код будет работать только , когдаdo_action
иapply_filters
называется (с соответствующим именем крюка), который бывает очень поздно в том месте , где эти крючки должны быть.Вы можете сказать, что это приведет к увеличению глобальной переменной
$wp_filter
=> больше памяти. Но я думаю, что создание новой функции имеет ту же проблему.Организационный код
Объединение всего в одну функцию заставляет вас помнить все хуки в каждом файле вашей темы / плагина. Вы бы не сделали что-то вроде этого:
header.php
: добавить хуки и функции обратного вызова для вещей, происходящих в заголовке (например, меню, регистрация скрипта)content.php
: добавить хуки и функции обратного вызова для фильтрации содержимогоadmin-menu.php
: добавить хуки и функции обратного вызова для добавления меню администратора(предположим, что эти файлы помещены в вашу тему / плагин)
Вместо этого вы должны:
header.php
,content.php
,admin-menu.php
=> Это затруднит понимание того, что происходит, когда вы смотрите на содержимое
header.php
файла. Вы должны искать, чтобы знать, когда эти обратные вызовы запускаются.И подумайте о ситуации, когда у вас есть несколько классов в вашей теме / плагине. Вы кладете все крючки всех классов в одном месте? Или у каждого класса есть функция-обертка, которая содержит все хуки? Это слишком избыточно!
Над этими причинами я думаю, что это личный стиль :). Я вижу, что некоторые фреймворки, такие как Hybrid, делают то, что вы сказали. Иногда мне трудно копаться в этих рамках!
источник