cómo agregar la versión de style.css en WordPress

14 mar 2013, 13:46:53
Vistas: 94.1K
Votos: 25

Cómo agregar la versión de style.css en WordPress como se puede hacer en Joomla.

<link rel="stylesheet" href="/templates/example/css/style.css?v=1.2">

Sé que style.css se cargará dinámicamente. Por favor, ayúdenme a saber cómo hacer esto.

1
Comentarios

Aquí hay un plugin https://wordpress.org/plugins/wp-css-version-history/ que añadirá automáticamente un número de versión en la hoja de estilos. Crea una nueva hoja de estilos que se carga al final. No es necesario borrar la caché para ver los cambios. Utiliza el editor CSS incorporado de WordPress y bloqueo de archivos para colaboración en equipo.

Brian Holzberger Brian Holzberger
14 may 2018 15:04:48
Todas las respuestas a la pregunta 11
7
22

El número de versión es un parámetro de wp_enqueue_style().

Según el Codex, estos son todos los parámetros que acepta wp_enqueue_style:

wp_enqueue_style( $handle, $src, $deps, $ver, $media );

Por ejemplo, para cargar una hoja de estilos con un número de versión, harías lo siguiente:

function wpa_90820() {
    wp_enqueue_style('my-styles', get_stylesheet_directory_uri() .'/my-styles.css', array(), '1.0' );       
}

add_action('wp_enqueue_scripts', 'wpa_90820');
14 mar 2013 13:54:19
Comentarios

cuando hago esto el antiguo style.css también se está cargando. ¿Cómo eliminarlo?

Toretto Toretto
14 mar 2013 14:10:00

@VinodDalvi ¿qué quieres decir con "handle"? No sé sobre eso, soy nuevo en WordPress por favor ayúdame.

Toretto Toretto
14 mar 2013 14:14:44

@Toretto O tu tema lo está incluyendo directamente en header.php o tu tema también lo está encolando con un handle diferente (el primer parámetro). La solución también depende de si estás editando directamente el functions.php de tu tema o si has creado un tema hijo.

helgatheviking helgatheviking
14 mar 2013 14:15:07

@Toretto, $handle se muestra en mi respuesta y también se describe en el enlace que proporcioné a la página del Codex para wp_enqueue_style, por favor haz tu tarea.

helgatheviking helgatheviking
14 mar 2013 14:15:59

@helgatheviking, ¿cómo puedo saber el nombre del manejador anterior?

Toretto Toretto
14 mar 2013 14:18:39

@Toretto Si tu tema está usando wp_enqueue_style() para cargar la hoja de estilos en cuestión, entonces su manejador es el primer parámetro. Si tu tema está codificando la hoja de estilos directamente en header.php, entonces no tendrá un manejador.

helgatheviking helgatheviking
14 mar 2013 14:22:54

Entendido, he reemplazado mi función de estilo de tema predeterminada y ahora está funcionando. Muchas gracias @helgatheviking.

Toretto Toretto
14 mar 2013 14:23:39
Mostrar los 2 comentarios restantes
1
22

Si eres un desarrollador de temas, es posible que desees forzar la recarga de tus recursos cuando publicas una nueva versión.

El versionado de un tema se realiza en style.css

/*
    Theme Name: Nombre de tu tema
    Version: 1.0.2
*/

Al inicio de tu functions.php:

$theme = wp_get_theme();
define('THEME_VERSION', $theme->Version); //obtiene la versión escrita en tu style.css

Luego, cuando cargues CSS o JS, usa THEME_VERSION como cuarto argumento:

function theme_styles()
{
    wp_enqueue_style('main', get_template_directory_uri().'/css/main.css', [], THEME_VERSION, 'all');
}
add_action('wp_enqueue_scripts', 'theme_styles'); 

Esto generará en la página:

.../nombre-de-tu-tema/css/main.css?ver=1.0.2 

Resulta útil cuando tienes múltiples recursos que gestionar y no deseas cambiarlos manualmente.

1 oct 2019 22:52:52
Comentarios

Utilicé este método para un tema hijo, por lo que usamos get_stylesheet_directory_uri() en lugar de get_template_directory_uri()

Carlos Carlos
7 abr 2021 15:40:25
4
14

En lugar de codificar manualmente la versión, en algunos casos puede ser mejor versionar dinámicamente tu hoja de estilos. De esta manera, cada vez que la modifiques, cambiará automáticamente y refrescará la caché del navegador inmediatamente sin tener que editar tu functions.php una y otra vez.

Puedes usar filemtime() para lograr esto. Así es como puedes hacerlo en un estilo hijo que hace referencia al parent_style:

    wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( $parent_style ), filemtime( get_stylesheet_directory() . '/style.css' )  );
17 nov 2017 20:28:52
Comentarios

Con el tiempo, he llegado a preferir las versiones de tema, pero es una gran idea usar filemtime() aquí, si uno no tiene una práctica consistente de versionado de temas.

jgangso jgangso
14 mar 2018 13:49:42

¡Esta es una gran solución! Acabo de usar array() para el tercer parámetro porque estoy usando un tema personalizado sin tema padre y funcionó perfectamente.

cam cam
19 ago 2021 01:24:57

Creo que esta es una buena solución, aún puedes usar algo como "1.2.0" en tu style.css, no es necesario mostrarlo en el DOM donde se carga el CSS.

herrfischer herrfischer
1 mar 2024 11:26:01

¡Esto es increíble, funciona a la perfección! Gracias por esto.

Patrick Reiner Patrick Reiner
23 mar 2024 15:35:57
6

Puedes lograr esto usando una de las siguientes formas:

1) Agrega la siguiente etiqueta en el archivo header.php del tema.

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>'?v=1.2" type="text/css" media="all" />

2) Agrega el siguiente código en el archivo functions.php del tema.

function theme_styles()  
{ 
  // Registrar el estilo así para un tema:  
  // (Primero el nombre único para el estilo (custom-style) luego el src, 
  // después dependencias, versión y tipo de medio)
  wp_enqueue_style( 'style-css', get_template_directory_uri() . '/style.css', array(), '1.2', 'all' );
}
add_action('wp_enqueue_scripts', 'theme_styles');

Para más información consulta esta página.

14 mar 2013 14:01:01
Comentarios

cuando hago esto, el antiguo style.css también se carga. ¿Cómo eliminarlo?

Toretto Toretto
14 mar 2013 14:10:19

¿Cuál es el handle del antiguo style.css?

Vinod Dalvi Vinod Dalvi
14 mar 2013 14:13:52

si no puedes encontrar el handle, simplemente copia y pega aquí la URL completa del style.css... lo obtendré desde ahí...

Vinod Dalvi Vinod Dalvi
14 mar 2013 14:19:35

¿O puedes decirme el nombre de tu tema o el nombre de la carpeta del tema?

Vinod Dalvi Vinod Dalvi
14 mar 2013 14:23:42

OK, lo tengo, he reemplazado mi función de estilo de tema predeterminado y comenzó a funcionar. Gracias. +1 de mi parte.

Toretto Toretto
14 mar 2013 14:24:22

De nada... :)

Vinod Dalvi Vinod Dalvi
14 mar 2013 14:25:22
Mostrar los 1 comentarios restantes
1

La mejor manera de cargar CSS en tu tema de WordPress es mediante el siguiente código en tu archivo functions.php:

function theme_styles()  
{ 
  global $ver_num; // define una variable global para el número de versión
  $ver_num = mt_rand() // en cada llamada/carga del estilo, $ver_num obtendrá un valor diferente
  wp_enqueue_style( 'style-css', get_template_directory_uri() . '/style.css', array(), $ver_num, 'all' );
}
add_action('wp_enqueue_scripts', 'theme_styles');

Esta es la forma correcta de cargar los estilos en tu tema y también es la mejor para fines de pruebas y desarrollo, ya que cada actualización entregará la versión actualizada del estilo.

Si deseas evitar la carga de la primera manera, puedes usar esta versión más corta y colocar la siguiente línea en tu archivo header.php para obtener el mismo resultado:

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); echo '?ver=' . filemtime( get_stylesheet_directory() . '/style.css'); ?>" type="text/css" media="screen, projection" />

Saludos

8 jun 2015 11:40:56
Comentarios

Esta es una mala idea, ya que obliga a que los archivos se descarguen una y otra vez en cada carga de página.

Sobral Sobral
13 jun 2024 22:24:46
0

Prueba esto:

Añade esto al archivo functions.php

function autoVer($filename){
    $url = get_template_directory_uri() . $filename;
    $file = get_template_directory() . $filename;
    if ( file_exists($file)) {
        return $url . '?v=' .md5(date("FLdHis", filectime($file)) . filesize($file));
    }
    clearstatcache();
}

Añade esto al header o footer -> autoVer('/js/main.js');

16 mar 2017 10:52:55
0

Contrario a los métodos presentados hasta ahora, creo que es mejor usar el número de versión que aparece en la parte superior de tu archivo style.css:

// style.css
/**
Theme Name: Mi tema
...
Version: 1.2.3
...
**/

Para usar la versión del tema en tu CSS, agrega lo siguiente a tu archivo functions.php (o equivalente):

<?php

wp_enqueue_style(
    'mi-tema',
    get_stylesheet_directory_uri() . '/style.css',
    [],
    wp_get_theme()->get('Version')
);

Esto significa que, después de editar tu archivo style.css, lo único que necesitas hacer es cambiar el número de versión en la parte superior del mismo archivo para ver los cambios en el frontend.

Si examinas la sección head del HTML del tema, verás lo siguiente:

<link rel='stylesheet'
    id='mi-tema-css'
    href='... style.css?ver=1.2.3'
    type='text/css'
    media='all'
/>
28 feb 2020 20:28:11
0

Otra solución, si aún no lo has resuelto, es cambiar el nombre del archivo style.css de tu tema hijo a, por ejemplo, style2.css y luego modificarlo en el archivo functions.php de tu tema hijo, como se muestra a continuación:

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

Esto hará que WordPress solicite y sirva un nuevo archivo CSS para tu sitio web.

22 jul 2020 02:20:25
2

Aquí utilizamos la función wp_get_theme() de WordPress para obtener la versión del tema (tal como está especificada en la hoja de estilos del tema, style.css):

// obtener versión del tema
function rave_get_version() {
    $theme_data = wp_get_theme();
    return $theme_data->Version;
}
$theme_version = rave_get_version();
global $theme_version;

wp_enqueue_style( 'main-style', get_template_directory_uri() .'/assets/css/style.css', [], THEME_VERSION, 'all' );
13 jun 2021 08:13:12
Comentarios

No creo que eso responda la pregunta, que era cómo agregar el número de versión a la URL del CSS, supongo que para evitar el caché.

Rup Rup
13 jun 2021 11:52:23

wp_enqueue_style( 'main-style', get_template_directory_uri() .'/assets/css/style.css', [], THEME_VERSION, 'all' );

Arif Rahman Arif Rahman
14 jun 2021 11:13:12
0

De hecho, no necesitas eliminar la caché del archivo style.css.

Puedes escribir tu propio archivo CSS y luego encolarlo como lo ha escrito @vinod dalvi.

function theme_styles()  
{ 
  wp_enqueue_style('stylecss',get_template_directory_uri().'/yourname.css', array(), '1.2', 'all' );
}
add_action('wp_enqueue_scripts', 'theme_styles');

Según las reglas del navegador, el último archivo CSS tiene mayor prioridad, así que asegúrate de usar !important en tu código CSS si es necesario.

Buena suerte.

10 ago 2021 14:29:00
1
-1

Esta es una forma bastante directa de obtener el número de versión llamando a la función bloginfo($show) dos veces. Primero para la hoja de estilos y en segundo lugar para el número de versión.

<link rel="stylesheet" id="style-css" href="<?php bloginfo('stylesheet_url'); ?>?ver=<?php bloginfo('version'); ?>" type="text/css" media="all" />

Eso es todo lo que hay que hacer. Espero que ayude o sea útil. Puedes revisar todos los parámetros disponibles y ver qué puedes mostrar con la función bloginfo().

Ignora mi comentario ya que @Ravs ha señalado mi error con respecto al parámetro 'versions' para la función bloginfo(). De hecho, imprime el número de versión de WordPress.

5 jun 2013 23:49:07
Comentarios

Creo que no es la respuesta correcta porque <?php bloginfo('version')?> te da la versión actual de WordPress mientras que la pregunta es sobre agregar la versión de style.css no la versión de WordPress.

Ravinder Kumar Ravinder Kumar
6 jun 2013 02:25:55