Eliminar dependencias de WooCommerce fuera de sus dominios
Comparto este script que permite eliminar las dependencias de WooCommerce en todas las páginas que no están relacionadas con su funcionamiento; todas salvo el carrito, checkout y las propias paginaciones de WooCommerce.
function bf_dequeue_woocommerce_styles_scripts() { if( function_exists( 'is_woocommerce' ) ) { if( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) { # Styles wp_dequeue_style( 'woocommerce-general' ); wp_dequeue_style( 'woocommerce-layout' ); wp_dequeue_style( 'woocommerce-smallscreen' ); wp_dequeue_style( 'woocommerce_frontend_styles' ); wp_dequeue_style( 'woocommerce_fancybox_styles' ); wp_dequeue_style( 'woocommerce_chosen_styles' ); wp_dequeue_style( 'woocommerce_prettyPhoto_css' ); # Scripts wp_dequeue_script( 'wc_price_slider' ); wp_dequeue_script( 'wc-single-product' ); wp_dequeue_script( 'wc-add-to-cart' ); wp_dequeue_script( 'wc-cart-fragments' ); wp_dequeue_script( 'wc-checkout' ); wp_dequeue_script( 'wc-add-to-cart-variation' ); wp_dequeue_script( 'wc-single-product' ); wp_dequeue_script( 'wc-cart' ); wp_dequeue_script( 'wc-chosen' ); wp_dequeue_script( 'woocommerce' ); wp_dequeue_script( 'prettyPhoto' ); wp_dequeue_script( 'prettyPhoto-init' ); wp_dequeue_script( 'jquery-blockui' ); wp_dequeue_script( 'jquery-placeholder' ); wp_dequeue_script( 'fancybox' ); wp_dequeue_script( 'jqueryui' ); } } } add_action( 'wp_enqueue_scripts', 'bf_dequeue_woocommerce_styles_scripts', 99 ); |
A modo de resumen, el funcionamiento es sencillo. Añadimos la llamada a nuestra función en el hook que se encarga de encolar los scripts en WordPress.
En dicha función hacemos una doble comparación: la primera para controlar que WooCommerce está activado y que el código no se rompa; la segunda para desencolar los estilos y scripts sólo en las páginas que no están relacionadas con WooCommerce.
*Nota: Si tu tema crea dependencias en todas las páginas, este script puede romper tu sitio. ¿Cómo saber si tu tema crea dependencias? Por ejemplo, si tiene el carrito o productos siempre visibles en la barra lateral, cabecera o similares.
Obviamente no me hago responsable del uso de este script; su funcionamiento está comprobado aquí mismo, en DarioBF.
«su funcionamiento está comprobado aquí mismo, en DarioBF» Eso quiere decir que tienes Woo en esta página… ¿qué tienes pensado hacer con ello? :P
Si, es sabido que tengo una plataforma de cursos online detrás de «lo que se ve» :)
Llevo tiempo dándole vueltas a la idea de añadir un script como este a Machete, pero como dices ya hay muchos temas que integran WooCommerce con toda la web.
Estoy dudando entre dos opciones:
– Quitar sólo los scripts que seguro que sólo se van a usar en la tienda (prettyphoto, fancybox, wc-checkout)
– Hacer un módulo específico con parches para WooCommerce
¿ideas?
Es dificil de atacar de forma genérica… Pero con un select en la configuración del plugin lo tienes hecho.