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.

Puede mejorarNo está malMe gustaEs bueno¡Excelente! (Ninguna valoración todavía)
Cargando…

¿Quieres recibir contenidos exclusivos?

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

  1. Ibon dice:

    “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

    1. DarioBF dice:

      Si, es sabido que tengo una plataforma de cursos online detrás de “lo que se ve” :)

  2. Nilo Velez dice:

    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?

    1. DarioBF dice:

      Es dificil de atacar de forma genérica… Pero con un select en la configuración del plugin lo tienes hecho.

Deja un comentario

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

*

*

DARÍO BALBONTÍN FERNÁNDEZ es el Responsable del tratamiento de los datos personales del usuario y le informa que estos datos serán tratados de conformidad con lo dispuesto en el Reglamento (UE) 2016/679 de 27 de abril de 2016 (GDPR), por lo que se le facilita la siguiente información del tratamiento: Fin del tratamiento: mantener una relación comercial y el envío de comunicaciones sobre nuestros productos y servicios. Criterios de conservación de los datos: se conservarán mientras exista un interés mutuo para mantener el fin del tratamiento y cuando ya no sea necesario para tal fin, se suprimirán con medidas de seguridad adecuadas para garantizar la seudonimización de los datos o la destrucción total de los mismos.Comunicación de los datos: No se comunicarán los datos a terceros, salvo obligación legal. Derechos que asisten al usuario: Derecho a retirar el consentimiento en cualquier momento. Derecho de acceso, rectificación, portabilidad y supresión de sus datos y a la limitación u oposición al su tratamiento. Derecho a presentar una reclamación ante la Autoridad de control (agpd.es) si considera que el tratamiento no se ajusta a la normativa vigente. Datos de contacto para ejercer sus derechos: contacto@dariobf.com.