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.

4 comentarios en “Eliminar dependencias de WooCommerce fuera de sus dominios

  1. 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?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *