Похоже, что многие разработчики плагинов тратят время на добавление хуков фильтра / действия, чтобы позволить пользователям настраивать функциональность своих продуктов. Это здорово, но часто они не предоставляют список хуков и сколько аргументов они принимают.
Кто-нибудь нашел лучший автоматический способ указать на каталог плагина (или темы) и увидеть список всех доступных хуков?
Мне показалось, что некоторые плагины сканируют хуки, но, насколько я могу судить, они показывают, какие из них на самом деле вызываются для отображения данной страницы. Что я могу получить, может быть удобно. Но иногда, если я знаю, что я взаимодействую с определенным плагином, я хочу знать каждое место, где он может позволить мне подключить действие или фильтр.
Итак, что я действительно ищу, так это то, что, учитывая корневой каталог плагина, создаст список, в котором каждый элемент включает в себя:
- тег
- тип (действие или фильтр)
- количество аргументов
- где это называется (через
do_action()
илиapply_filter()
) в источнике
Сценарий был бы великолепен, так как он, по-видимому, мог бы красиво HTMLify целиком и показать его мне прямо в интерфейсе администратора для каждого плагина. Но даже сценарий командной строки, который выводит полезный статический файл, был бы великолепен.
Ответы:
Я не знаю сценарий или плагин, чтобы делать то, что вы хотите. Как вы сказали, есть сценарии ( даже глобальные переменные ), которые вы можете использовать для печати фильтров и используемых в настоящее время действий.
Что касается бездействующих фильтров и действий, я написал две очень основные функции ( с некоторой помощью здесь и там ), которые находят все
apply_filters
иdo_action
экземпляры в файле, а затем распечатывают егоОСНОВЫ
Мы будем использовать классы
RecursiveDirectoryIterator
,RecursiveIteratorIterator
иRegexIterator
PHP, чтобы получить все файлы PHP в каталоге. Как пример, на моем локальном хосте я использовалE:\xammp\htdocs\wordpress\wp-includes
Затем мы будем перебирать файлы, искать и возвращать (
preg_match_all
) все экземплярыapply_filters
иdo_action
. Я настроил его для соответствия вложенных экземпляров скобок, а также для сопоставления возможных пробелов междуapply_filters
/do_action
и первой скобкойМы просто создадим массив со всеми фильтрами и действиями, а затем пройдемся по массиву и выведем имя файла, фильтры и действия. Мы будем пропускать файлы без фильтров / действий
ВАЖНЫЕ ЗАМЕТКИ
Эти функции очень дороги. Запускайте их только при локальной тестовой установке.
Измените функции по мере необходимости. Вы можете записать вывод в файл, создать для этого специальную бэкэнд-страницу, опции не ограничены
ОПЦИЯ 1
Первая функция опций очень проста, мы будем возвращать содержимое файла в виде строки, используя
file_get_contents
, искатьapply_filters
/do_action
экземпляры и просто выводить имя файла и имена фильтров / действийЯ прокомментировал код для легкого следования
Вы можете использовать по шаблону, веб-интерфейсу или бэкэнду
Это напечатает
ВАРИАНТ 2
Этот вариант немного дороже в запуске. Эта функция возвращает номер строки, в которой можно найти фильтр / действие.
Здесь мы используем,
file
чтобы взорвать файл в массив, затем мы ищем и возвращаем фильтр / действие и номер строкиВы можете использовать по шаблону, веб-интерфейсу или бэкэнду
Это напечатает
РЕДАКТИРОВАТЬ
Это в основном столько, сколько я могу сделать без тайм-аутов скриптов или нехватки памяти. С кодом в варианте 2 это так же просто, как перейти к указанному файлу и указанной строке в исходном коде, а затем получить все допустимые значения параметров фильтра / действия, а также, что важно, получить функцию и дополнительный контекст, в котором фильтр / действие используется
источник
Похоже, WP Parser делает то, что вы ищете. Он используется для генерации официальной ссылки разработчика . В нем перечислены параметры, теги @since и ссылки на источник. Он работает со всеми плагинами WordPress и доступен через командную строку:
источник
Быстрый и яростный
Хорошая старая
*nix
командная строка всегда удобна:Многие другие варианты через
#man grep
.Тогда мы можем даже создать простой скрипт bash
wp-search.sh
:и запустить его с.
Симпатичный выход
Мы можем использовать
--color
атрибут, чтобы раскрасить выводgrep
, но учтите, что он не будет работатьless
.Другой вариант - создать таблицу HTML для результатов поиска.
Вот
awk
пример, который я создал, который выводит результаты поиска в виде таблицы HTML вresults.html
файл:где я использовал этот трюк для удаления всех начальных пробелов, а этот - для печати всех полей, кроме первого.
Я использую
sed
здесь только для добавления дополнительного пробела после второго двоеточия (:
), на случай, если там нет места.скрипт
Мы могли бы добавить это в наш
wp-search.sh
скрипт:где вы должны настроить
/path/to/some/directory
и/path/to/results.html
в соответствии с вашими потребностями.Пример - Поиск плагина
Если мы попробуем это на
wordpress-importer
плагине с:тогда
results.html
файл будет отображаться как:Пример - поиск в ядре
Я раз проверил это на ядро:
и это быстро!
Заметки
Чтобы получить дополнительный контекст, мы могли бы использовать
-C NUMBER
grep.Мы могли бы изменить вывод HTML различными способами, но, надеюсь, вы сможете настроить его в соответствии со своими потребностями.
источник