Eliminar el parámetro de versión (?ver=X.X.X) en estilos y scripts con wp_enqueue

9 abr 2015, 02:24:05
Vistas: 17.3K
Votos: 17

Caso de uso

He estado experimentando con las funciones de Workspace de Chrome Dev Tools. Incluye la capacidad de editar un archivo directamente en Dev Tools y hacer que la hoja de estilos guardada se actualice automáticamente (¡o incluso compilar y luego actualizar!).

Sin embargo, como se documenta en la pregunta de StackOverflow "Auto-Reload Generated CSS de Chrome no recarga la página cuando SASS recompila CSS", los parámetros de URL en la hoja de estilos impiden que Chrome detecte los cambios.

Resultado deseado

Eso significa que solo durante el desarrollo, quería eliminar el ?ver=X.X.X del enlace normal de hoja de estilos <link> generado por wp_enqueue_style(). En otras palabras, quería que el href predeterminado:

http://localhost/mysite/wp-includes/style.css?ver=4.1.1

se convirtiera en esto:

http://localhost/mysite/wp-includes/style.css
0
Todas las respuestas a la pregunta 3
0
17

Comportamiento por defecto de wp_enqueue_[style/script]()

El valor por defecto para el argumento $version de wp_enqueue_style() es false. Sin embargo, ese valor por defecto simplemente significa que las hojas de estilo reciben la versión de WordPress en su lugar.

Solución

Gracias al artículo "Remove version from WordPress enqueued CSS and JS", descubrí el hecho no documentado de que al pasar null como versión ¡se eliminará la versión completamente!

Ejemplo

wp_enqueue_style( 'wpse-styles', get_template_directory_uri() . '/style.css', array(), null );

Recordatorio importante

Vale la pena señalar, como se menciona en la pregunta, que esto probablemente solo debería hacerse durante el desarrollo (como en el caso de uso específico). El parámetro de versión ayuda con el almacenamiento en caché (y no almacenamiento en caché) para los visitantes del sitio, por lo que probablemente debería dejarse intacto en el 99% de los casos.

9 abr 2015 02:24:05
4
10

Gracias por tu publicación, mrwweb.

Encontré otra solución para esto, creando un plugin muy simple que puedes desactivar cuando el sitio ya no esté en desarrollo.

<?php

/*
Plugin name: Eliminar versión de WP en hojas de estilo/scripts
*/

function cambiar_src_hoja_estilo( $src, $handle ) {

        $src = remove_query_arg( 'ver', $src );
        return $src;
}
add_filter( 'style_loader_src', 'cambiar_src_hoja_estilo', 10, 2 );

?>

Pasé un par de minutos tratando de encontrar esta solución. Pensé en compartir otra opción aquí en lugar de crear una nueva Pregunta/Respuesta.

27 jul 2015 03:53:23
Comentarios

no funciona...

reggie reggie
16 nov 2016 10:33:16

Esta es la respuesta correcta. Usa este filtro durante el desarrollo y elimínalo cuando pongas el sitio en producción.

dtbaker dtbaker
26 jun 2017 03:24:27

Mucho mejor que desencolar y encolar estilos. También aplicable a scripts con el filtro script_loader_src

Dharma Dharma
3 oct 2018 11:52:17

¡Perfecto! Funcionó de maravilla.

Allen Gingrich Allen Gingrich
19 oct 2021 01:50:46
0

basándonos en la sugerencia de @ricardo-andres, un código aplicable en cualquier momento, especialmente para recursos en CDN (como jQuery) - eliminamos esta etiqueta de consulta en recursos que tienen una versión incluida en sus nombres

function clean_src( $src, $handle ) {
    if (preg_match('_\d[^\?/]*\?_', $src))
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'clean_src', 10, 2 );
add_filter( 'script_loader_src', 'clean_src', 10, 2 );

25 sept 2020 18:06:45