Eliminar estilos no utilizados de wordpress

3 minutos de lectura

avatar de usuario
Ognj3n

Estoy tratando de sacar de la cola/darse de baja estilos que son innecesarios (WooCommerce, formulario de contacto 7) de todas las publicaciones/páginas de mi sitio web de wordpress.

Intentó oficial La forma de WooCommerce de deshabilitar estos estilos y secuencias de comandos adicionales, pero no los elimina, ya que los estilos aún están cargados en el código fuente y Google PageSpeed ​​Insights todavía los muestra como renderizados; asi que:

add_filter( 'woocommerce_enqueue_styles', 'jk_dequeue_styles' );
function jk_dequeue_styles( $enqueue_styles ) {
    unset( $enqueue_styles['woocommerce-general'] );    // Remove the gloss
    unset( $enqueue_styles['woocommerce-layout'] );     // Remove the layout
    unset( $enqueue_styles['woocommerce-smallscreen'] );    // Remove the smallscreen optimisation
    return $enqueue_styles;
}

// Or just remove them all in one line
add_filter( 'woocommerce_enqueue_styles', '__return_false' );

en functions.php no funciona También traté de eliminarlos así:

function remove_assets() {
    wp_dequeue_style('wc-block-vendors-style-css');
    wp_deregister_style('wc-block-vendors-style-css');
}
add_action( 'wp_print_styles', 'remove_assets', PHP_INT_MAX );

Apuntando a una identificación de estilo específica wc-block-vendors-style-css y entorno PHP_INT_MAX. Todavía no está eliminando ese estilo específico.

ingrese la descripción de la imagen aquí

Notas:

Este functions.php pertenece al tema secundario de un tema de WordPress personalizado, rehecho veinte veinte y el caché se ha borrado. Probé la mayoría de las respuestas aquí del StackOverflow de usuarios que tienen problemas similares, pero ninguna funcionó.

El soporte de Woocommerce está habilitado en el tema.

¿Cómo eliminar/cancelar el registro de estilos y scripts con WordPress 5.6 en 2021?

  • Además de la respuesta proporcionada… Su respuesta oficial utiliza la función incorrecta. gist.github.com/woogists/…

    – Howard E.

    4 de enero de 2021 a las 10:49


  • @HowardE Ese fragmento es parte de la fuente de documentos de woocomerce que cuestioné, probé ese también, no funcionó. Todos los estilos y scripts de WooCommerce todavía están cargados

    – Ognj3n

    4 de enero de 2021 a las 10:53

  • la esencia dice add_filter( 'woocommerce_enqueue_styles', '__return_empty_array' ); lo que pones arriba es __return_false

    – Howard E.

    4 de enero de 2021 a las 10:55

  • docs.woocommerce.com/document/disable-the-default-stylesheet/… Lee esto; tu sugerencia está ahí, lo intenté, no está funcionando …

    – Ognj3n

    4 de enero de 2021 a las 10:57


  • En este caso, debe asegurarse de que sus funciones se estén ejecutando realmente. Puede intentar descargar algo en error_log para validar que sus funciones se están activando.

    – Howard E.

    4 de enero de 2021 a las 10:59

Según @Aliakseyenka Ihar: me probé a mí mismo, cuando agregué deregister antes de wp_dequeue_style – elimina el estilo del proveedor

function remove_assets() {
    wp_deregister_style('wc-block-vendors-style');
    wp_dequeue_style('wc-block-vendors-style');
}
add_action( 'wp_enqueue_scripts', 'remove_assets', 11);

O camino ninja

add_filter( 'wp_enqueue_scripts', 'jk_dequeue_styles', 99999 );
function jk_dequeue_styles( $enqueue_styles ) {
    global $wp_styles;
    unset ( $wp_styles->registered['wc-block-vendors-style'] );
}

Si su hoja de estilo está registrada y en cola correctamente, entonces…

function dequeue_css() {
    wp_dequeue_style('wc-block-vendors-style');
    wp_deregister_style('wc-block-vendors-style');
}
add_action('wp_enqueue_scripts','dequeue_css');
// add a priority if you need it
// add_action('wp_enqueue_scripts','dequeue_css',100);

O puedes probar de esta manera:

add_filter('style_loader_src', function($href){
    if(strpos($href, "wc-block-vendors-style") !== false) {
        return false;
    }
    return $href;
});

Descubrí que para eliminar esos estilos se requería la integración de Woocomerce en el tema activo.

add_theme_support( 'woocommerce' );

Esto resolvió mi problema.

¿Ha sido útil esta solución?