Я не вижу больших преимуществ этой практики по следующим причинам:
Ваши функции обратного вызова не вызываются при регистрации
Функции 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, делают то, что вы сказали. Иногда мне трудно копаться в этих рамках!
wp_loaded
и MS информация.