Если плагин использует какой-либо сценарий (выдающийся пример: jQuery UI Datepicker), но вы недовольны тем, как скрипт отображает выходные данные, тогда есть две возможности:
1. Отмените регистрацию скрипта> Добавьте свою версию
Итак, сначала вам нужно проверить ручку, затем найти приоритет и крюк ( wp_enqueue_scripts
, login_enqueue_scripts
и т. Д.) ... вы знаете упражнение.
2. Измените параметры плагина jQuery
Обычно - если плагин не дерьмовый - он проталкивает параметры из PHP в JS, используя
wp_localize_script( $handle, $object_name, array(
// data
) );
Теперь это умный способ добавления ваших данных в JS-скрипт, но ... по умолчанию он не фильтруется. Ни , WP_Scripts
ни WP_Dependencies
предложения любых пользователи фильтра могут впоследствии использовать
Вопрос: Как мы можем фильтровать аргументы / параметры, которые перемещаются из PHP в Javascript, используя
wp_localize_script
?
wp_localize_script()
: одиночный или многомерный массив .@toscho отличная реализация. Проверено и верно. Вот немного измененная версия, которая также передает $ handle и $ object_name, так что вы можете фильтровать только при необходимости.
источник
Принятый ответ отличный! Но я столкнулся с проблемой, что Расширенные пользовательские поля перестали работать в бэкэнде из-за ошибки JavaScript. После нескольких часов копания я пришел к выводу, что в объекте Filterable_Scripts отсутствуют файлы javascript, зарегистрированные плагином ACF. Я не знаю точно, почему он это сделал, но я нашел правильное решение, если вы столкнетесь с той же проблемой.
К
$GLOBALS['wp_scripts']
счастью, все еще содержал правильные сценарии. Итак, я сделал следующее вadd_action
:Поскольку объект содержит массив всех зарегистрированных сценариев, а дескрипторы также являются ключами массива, я мог бы использовать array_diff_key, чтобы определить, какие сценарии отсутствовали в расширенном объекте, и повторно добавить их. Я сделал это, и не только
$fscripts->registered = $GLOBALS['wp_scripts']->registered;
потому что я не хотел перезаписывать какие-либо изменения, сделанные расширенным объектом.
источник
$acf_field_group = $GLOBALS['wp_scripts']->registered['acf-field-group'];
(такжеacf-input
), а затем снова добавить их в экземпляр расширенногоWP_Scripts
тега:, а$GLOBALS['wp_scripts']->registered['acf-field-group'] = $acf_field_group
затем понял, что ACF использует сценарии только в Admin, и я толькоl10n
впереди, поэтому просто завернул действие и фильтр в!is_admin
тесте.