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 );
Lenguaje del código: PHP (php)
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; aunque 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.