2012-08-07 9 views
21

¿Puede alguien guiarme en cuanto a cuál es el método adecuado para reemplazar los archivos principales de JavaScript de WooCommerce, específicamente los archivos frontend. No he encontrado ninguna documentación sobre esto y estoy mirando el código, la ruta a los archivos del script frontend está codificada en el plugin así que dudo que al colocar una carpeta de activos en mi tema haga cualquier cosa.Anular WooCommerce Frontend Javascript

¿Cuál es la forma más limpia de esto para que pueda cargar un archivo ubicado en mi directorio de temas?

Gracias

+0

¿Quieres desactivar por completo su scripting, o anulación un comportamiento o evento en particular? –

+0

Bueno, iba a sobrescribir completamente el archivo javascript (add-to-cart-variation.js) porque hay bastantes cambios que debo hacer. – Sebastien

+1

En ese archivo, parece que solo hay dos eventos vinculados en el doc ready. Podrías desvincularlos en tu propia secuencia de comandos. línea-4 y línea-216 https://github.com/woothemes/woocommerce/blob/master/assets/js/frontend/add-to-cart-variation.js. No he trabajado con ese complemento, pero supongo que también puedes modificar manualmente ese archivo. –

Respuesta

27

que tenían el mismo problema, excepto con el add-to-cart.js. La solución simple es DEQUEUEAR la secuencia de comandos woocommerce y REEMPLAZAR su reemplazo. En mi caso he añadido lo siguiente a mi functions.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); 

que se quiere quitar de la cola el guión 'wc-add-to-carro-variación'. No creo que tenga para COINCIDIR con el mismo nombre, pero no pude ver una razón para no hacerlo.

Espero que esto ayude.

Si está utilizando la versión 4.0.1 de WordPress y la versión 2.2.10 de WooCommerce. Se pueden utilizar los siguientes guiones:

 

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'); 
 
+4

es '' mejor '' en cola con el mismo nombre, por lo que no romperá ninguna dependencia que tenga puede tener. – Leonel

+2

Si intenta enrutar con el mismo identificador, el archivo original aún se pone en cola a menos que anule el registro del identificador original con 'wp_dequeue_script()' antes de volver a ponerlo en cola. – cfx

+0

¿Podría consultar mi pregunta también? Http://wordpress.stackexchange.com/questions/215238/how-to-add-quick-edit-in-woocommerce-order-section –

1

Añadir esta sección para su function.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'); 
19

WooCommerce scripts y estilos cargas frontend en class-wc-frontend-scripts.php archivo, y no se puede encontrar cómo se registran los guiones, enqueued, localizado y dependencias.

El lugar preferido para poner en cola las secuencias de comandos en Wordpress es el gancho de acción wp_enqueue_scripts, porque ese es el momento después de que Wordpress está completamente cargado pero antes de que se realice cualquier salida. Y también me gusta poner en cola todos mis guiones y estilos relacionados en una sección de código.

Cuando desee eliminar por completo algunas secuencias de comandos, es suficiente llamar a wp_deregister_script() o wp_dequeue_script(). Pero a veces, si desea realizar algunos cambios y dejar las dependencias, variables y localización existentes, existe un problema porque los complementos se cargan antes que los temas. Así que las funciones en cola no funcionarán como es de esperar. Simple wp_dequeue_script() => wp_enqueue_script()not work, wp_deregister_script() => wp_register_script() funcionará, pero se perderán los datos localizados.


Esto se puede resolver mediante el trabajo directo con $wp_scripts objeto global que contiene y gestiona todos los scripts cargan a través de wp_enqueue_script() o registrados con 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'; 
    } 
+0

La última funciona para mí, paquete de agradecimientos –

+0

Me gustó la opción '$ wp_scripts' porque de esa manera no molesto/necesito preocuparme por las dependencias del script o la versión, etc. +1 –

+0

¡Esta es realmente una respuesta tan increíble! No tenía idea de que pudieras trabajar con él o que incluso había un objeto '$ wp_scripts' que podrías modificar. ¡Esto es increíble! ¡Quiero comprarte una cerveza! – Radmation

Cuestiones relacionadas