Я загружаю некоторые файлы JavaScript в родительской теме. Путь в родительской теме:
scripts > custom.js
В дочерней теме я создаю тот же путь ( scripts > custom.js
) и изменяю некоторые jQuery внутри custom.js
файла.
Проблема в том, что изменения не применяются. Это неправильный способ внести изменения в эти файлы в дочерней теме?
child-theme
wp-enqueue-script
Крис Молитор
источник
источник
Ответы:
Дочерние темы переопределяют только файлы php (такие как header.php), которые включены в такие функции, как get_template_part или get_header и т. Д.
Правильный способ добавления скриптов в WordPress - с помощью wp_enqueue_script . Если ваша родительская тема использует это, вы можете переопределить файлы JS, используя wp_dequeue_script и поставив в очередь свои собственные.
Вот так...
Если родительская тема не использует wp_enqueue_script, она, вероятно, подключается к wp_head (или wp_footer) для вывода сценариев там. Таким образом, вы должны использовать remove_action, чтобы избавиться от этих функций, выводящих сценарии, а затем поставить в очередь свой собственный сценарий.
Если скрипт жестко запрограммирован в файле шаблона, вам просто нужно заменить этот файл шаблона в вашей дочерней теме без тега script.
Если они использовали вызовы wp_enqueue_script , которые используют get_stylesheet_directory_uri , то вам не нужно ничего делать. Так как этого не происходит, вам просто нужно покопаться и посмотреть, что сделал автор темы.
источник
wp_enqueue_scripts
мог использоваться только для постановки сценариев на передний конец. Обновлено. Если вы видите что-то устаревшее, не стесняйтесь редактировать.add_action( 'wp_enqueue_scripts', 'wpse26822_script_fix', 100 );
из codex.wordpress.org/Function_Reference/wp_dequeue_scriptwp_deregister_script('parent-script-handle');
чтобы полностью удалить родительский скрипт. Действительно, у меня не получилось без этого. WP 4.6.1В некоторых случаях важно установить приоритетность вызовов функций add_action и wp_enqueue_script следующим образом:
В этом случае wp_enqueue_scripts был вызван родителем с приоритетом 20120206 (дата), и поэтому это действие добавляется с приоритетом, чуть превышающим его, так что оно будет немедленно отменено. Затем следующий за ним оператор enqueue фактически имеет приоритет после этого, чтобы гарантировать, что он загружается после того, как старый был удален. Значение true в этом случае также важно, поскольку оно указывает, что он должен быть помещен в нижний колонтитул, в который родительский сценарий был впервые помещен.
Кроме того, я не могу полностью объяснить это, но я замечаю, что если вы будете осторожны с удалением исходного сценария сразу после того, как он был помещен в очередь, кажется, что вы можете эффективно предотвратить его загрузку в первую очередь.
источник
wp_enqueue_script
не имеет параметра приоритета, это всего лишь номер версии, который объединяется в конец пути в виде строки запроса. Этот параметр используется, чтобы гарантировать, что правильная версия отправляется клиенту независимо от кэширования [...]вызовите wp_deregister_script, прежде чем зарегистрировать свою собственную версию
источник
источник