Подтвердить что ты не робот

Переопределить WooCommerce Frontend Javascript

Может ли кто-нибудь указать мне, что является надлежащим методом переопределения основных файлов Javascript WooCommerce, в частности файлов интерфейса. Я не нашел никакой документации по этому поводу и посмотрел на код, путь к интерфейсу script файлов жестко закодирован в плагине, поэтому я сомневаюсь, что размещение папки с ресурсами в моей теме сделает что угодно.

Каков самый чистый способ для этого, чтобы я мог загрузить файл, расположенный в моей теме dir?

Спасибо

4b9b3361

Ответ 1

У меня была такая же проблема, кроме как с add-to-cart.js. Простым решением является DEQUEUE woocommerce script и ENQUEUE для вашей замены. В моем случае я добавил следующее к своим функциям .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 );

Вы хотите, чтобы DEQUEUE "wc-add-to-cart-variant" script. Я не думаю, что вы должны ENQUEUE с тем же именем, но я не мог понять, почему это не так.

Надеюсь, что это поможет.

Если вы используете 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');

Ответ 2

WooCommerce загружает скрипты и стили оформления в файле class-wc-frontend-scripts.php, а также можно узнать, как скрипты регистрируются, локалируются, локализованы и зависят от них.

Предпочтительным местом для запуска сценариев в Wordpress является wp_enqueue_scripts action hook, потому что это момент, когда Wordpress полностью загружен, но до того, как будет выполнен какой-либо вывод. Кроме того, мне нравится вставлять все связанные с ним script и стили в одном разделе кода.

Если вы хотите полностью удалить некоторые скрипты, достаточно вызвать либо wp_deregister_script(), либо wp_dequeue_script(). Но иногда, если вы хотите внести некоторые изменения и оставить существующие зависимости, переменные и локализацию, возникает проблема, потому что плагины загружаются перед темами. Таким образом, функции очереди не будут работать так, как вы ожидали. Простой 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';
    }

Ответ 3

Добавьте этот раздел в свою функцию. php

function themeslug_enqueue_script() {
wp_enqueue_script( 'add-to-cart-variation', get_bloginfo( 'url' ). '/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart-variation.js', false );
}
add_action( 'wp_enqueue_scripts', 'themeslug_enqueue_script' );

Ответ 4

enter image description here

Как мы можем переопределить скрипт заказа продуктов woocommerce