Переопределение Интерфейса WooCommerce Javascript
Может ли кто-нибудь подсказать мне, как правильно переопределять основные Javascript-файлы WooCommerce, в частности файлы frontend. Я не нашел никакой документации по этому вопросу и, глядя на код, путь к файлам скриптов frontend жестко закодирован в плагине, поэтому я сомневаюсь, что размещение папки assets в моей теме что-либо сделает.
Какой самый чистый способ сделать это, чтобы я мог загрузить файл, расположенный в моей теме dir?
Спасибо
3 ответа:
У меня была та же проблема, за исключением добавления в корзину.JS. Простое решение состоит в том, чтобы отключить скрипт woocommerce и поставить в очередь свою замену. В моем случае я добавил к своим функциям следующее.php:
wp_dequeue_script('wc-add-to-cart'); wp_enqueue_script( 'wc-add-to-cart', get_bloginfo( 'stylesheet_directory' ). '/js/add-to-cart-multi.js' , array( 'jquery' ), false, true );
Вы хотите удалить из очереди сценарий "wc-add-to-cart-variation". Я не думаю, что вы должны ставить в очередь с тем же именем, но я не вижу причин не делать этого.
Надеюсь, это поможет.
Если вы используете WordPress версии 4.0.1 и WooCommerce версии 2.2.10. Вы можно использовать следующие скрипты:
wp_deregister_script('wc-add-to-cart'); wp_register_script('wc-add-to-cart', get_bloginfo( 'stylesheet_directory' ). '/js/add-to-cart-multi.js' , array( 'jquery' ), WC_VERSION, TRUE); wp_enqueue_script('wc-add-to-cart');
WooCommerce загружает интерфейсные скрипты и стили в файл
class-wc-frontend-scripts.php
, и там можно найти, как скрипты регистрируются, помещаются в очередь, локализуются и зависимости.Предпочтительным местом для запроса скриптов в Wordpress является крюк действия
wp_enqueue_scripts
, потому что это момент после полной загрузки Wordpress, но до того, как будет сделан какой-либо вывод. А также мне нравится помещать все мои связанные скрипты и стили в один раздел кода.Если вы хотите полностью удалить некоторые скрипты, вызовите достаточно либо
wp_deregister_script()
, либоwp_dequeue_script()
. Но иногда, если вы хотите внести некоторые изменения и оставить существующие зависимости, переменные и локализацию, возникает проблема, потому что плагины загружаются раньше тем. Поэтому функции enqueue не будут работать так, как вы ожидаете. Простойwp_dequeue_script() => wp_enqueue_script()
не будет работать.,wp_deregister_script() => wp_register_script
() будет работать, но локализованные данные будут потеряны.
Это можно решить, работая непосредственно с
$wp_scripts
глобальным объектом, который содержит и управляет всеми скриптами, загруженными черезwp_enqueue_script()
или зарегистрирован вwp_register_script()
:add_action( 'wp_enqueue_scripts', 'load_theme_scripts' ); function load_theme_scripts() { global $wp_scripts; $wp_scripts->registered[ 'wc-add-to-cart' ]->src = get_template_directory_uri() . '/woocommerce/js/wc-add-to-cart.js'; }