¿Cómo cambiar la versión de .css en WordPress?

29 nov 2016, 04:45:18
Vistas: 55.6K
Votos: 15

Como sugiere el título, no estoy muy seguro de cómo cambiar la versión de un archivo .css en mi tema. Por el momento, el versionado del .css es así:

<link rel='stylesheet' id='xxxx'  href='https://www. site css/ styles.css?ver=4.6.1' type='text/css' media='all' />

¿Hay algún script que necesite ejecutar - dónde debería buscar para hacer la versión 4.6.2 como se muestra arriba?

css
1
Comentarios

¿Cómo estás haciendo que este script se imprima?

Nathan Powell Nathan Powell
29 nov 2016 04:51:44
Todas las respuestas a la pregunta 4
3
19

El cuarto argumento, $ver para wp_enqueue_style(), te permite establecer la versión:

wp_enqueue_style( string $handle,
                  string $src = false,
                  array $deps = array(),
                  string|bool|null $ver = false,
                  string $media = 'all' );

Según la documentación:

$ver (string|bool|null) (Opcional) Cadena que especifica el número de versión de la hoja de estilos, si tiene uno, que se añade a la URL como un parámetro de consulta para evitar problemas de caché. Si la versión se establece como false, se añade automáticamente un número de versión igual a la versión actual de WordPress instalada. Si se establece como null, no se añade ninguna versión. Valor por defecto: false

29 nov 2016 04:53:32
Comentarios

Gracias por eso - Supongo que lo que pregunto es 'cómo hago eso' - es decir, '¿cómo ejecuto ese script para generar una nueva versión?' Espero que tenga sentido...

Henry Henry
29 nov 2016 04:55:01

¿Podrías actualizar tu pregunta con el código donde se llama a wp_enqueue_style()? WordPress maneja el versionado automáticamente según la explicación de $ver publicada en mi respuesta, así que asumo que $ver está establecido en false. Si deseas cambiarlo, modifica el argumento $ver a una nueva cadena (no usaría 4.6.2 ya que esa convención ya la usa WordPress), pero técnicamente funcionaría.

Dave Romsey Dave Romsey
29 nov 2016 04:58:39

Puedes sustituir fácilmente cualquier cosa allí. Por ejemplo, $ver = time(); crearía una nueva versión cada vez que cargues la página, y la versión sería la hora.

Nathan Powell Nathan Powell
29 nov 2016 04:59:55
1

La mayoría de los temas usan la función wp_enqueue_style() dentro de su archivo functions.php para agregar la hoja de estilos en el encabezado. Aquí está cómo averiguar si tu tema hace lo mismo.

Abre tu archivo wp-content/themes/NOMBRE_DE_TU_TEMA/functions.php, y busca la línea que está agregando la hoja de estilos, como:

wp_enqueue_style('main_style',  get_stylesheet_directory_uri() . '/style.css');

O como:

wp_enqueue_style( 'twentysixteen-style', get_stylesheet_uri() );

Puedes buscar por el ID (excepto la parte de -css)... si el ID es: main_style-css, busca solo main-style en tu archivo functions.php, y probablemente encontrarás la línea de código que estabas buscando.

Ahora que encontraste el código y sabes que tu tema agrega esta hoja de estilos usando wp_enqueue_style() en el archivo functions.php, necesitas actualizar este código para la versión.

$style_ver = filemtime( get_stylesheet_directory() . '/style.css' );
wp_enqueue_style( 'main_style', get_stylesheet_directory_uri() . '/style.css', '', $style_ver );

Como puedes ver, este código obtiene la última hora de modificación del archivo style.css usando la función PHP filemtime() y también convierte la hora a timestamp usando la función PHP time() solo para mantener las cosas limpias.

Si no quieres que la versión cambie dinámicamente cada vez, puedes simplemente hacer esto:

wp_enqueue_style( 'main_style', get_stylesheet_directory_uri() . '/style.css', '', '1.5' );

Eso es básicamente todo. ¡Paz!

30 nov 2016 23:38:05
Comentarios

Atención: deberías usar get_stylesheet_directory() dentro de filemtime() ya que devolverá una ruta del sistema.

Rob W Rob W
14 jul 2017 01:17:26
0

No obtuve mucho de estas respuestas, así que pensé en escribir lo que funcionó para mí. Sé que el codex dice:

$ver (string|bool|null) (Opcional) Cadena que especifica el número de versión de la hoja de estilos, si tiene uno, que se agrega a la URL como una cadena de consulta para evitar el almacenamiento en caché. Si la versión se establece en false, se agrega automáticamente un número de versión igual a la versión actual de WordPress instalada. Si se establece en null, no se agrega ninguna versión. Valor por defecto: false

Pero es muy críptico en cuanto a cómo funciona realmente. No pude hacer que un número de versión en wp_enqueue_style activara un parámetro de consulta como ?ver=1.2.3 en mi hoja de estilos. Sin embargo, establecerlo en true permite que la versión declarada en la hoja de estilos realice un cache bust de la hoja de estilos. (sigue leyendo)

Dentro de tu style.css debes nombrar tu tema. Esto es requerido por WP. Sin embargo, otras opciones como version son a las que hace referencia el booleano de versión de wp_enqueue_style.

/******************************************************************
Site Name: MySite.com
Author: @BenRacicot
Version: 4.0 // <- número de versión de wp_enqueue_style
Stylesheet: Main Stylesheet
******************************************************************/

Ahora, cuando cambio eso a Version: 4.1 obtengo style.css?cache-bust=0.24135995238933283

31 jul 2017 17:16:06
1

Puedes simplemente usar time() al momento de encolar estilos o scripts de esta manera...

Sin usar la función de WordPress wp_enqueue_style()

<link rel='stylesheet' id='xxxx'  href='https://www.site/css/styles.css?ver=<?php echo time(); ?>' type='text/css' media='all' />

Usando la función wp_enqueue_style()

wp_enqueue_style('style_sheet_name', get_stylesheet_directory_uri() . '/custom_style.css', '', time());

O

wp_enqueue_style('style_sheet_name', get_stylesheet_uri() . '/custom_style.css', '', time());
8 feb 2018 08:52:53
Comentarios

No recomendaría esto, estoy bastante seguro de que anulará por completo el almacenamiento en caché de versiones.

Fabian von Ellerts Fabian von Ellerts
28 mar 2019 10:33:05