cum să adaugi versiunea fișierului style.css în WordPress

14 mar. 2013, 13:46:53
Vizualizări: 94.1K
Voturi: 25

Cum să adaug versiunea fișierului style.css în WordPress similar cu modul în care pot face în Joomla.

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

Știu că style.css se încarcă dinamic. Te rog să mă ajuți cum să fac asta.

1
Comentarii

Iată un plugin https://wordpress.org/plugins/wp-css-version-history/ care va adăuga automat un număr de versiune în fișierul de stiluri. Acesta creează un nou fișier de stiluri care este încărcat ultimul. Nu este nevoie să ștergeți cache-ul pentru a vedea modificările. Utilizează editorul CSS integrat în WordPress și blocarea fișierelor pentru colaborarea în echipă.

Brian Holzberger Brian Holzberger
14 mai 2018 15:04:48
Toate răspunsurile la întrebare 11
7
22

Numărul versiunii este un parametru al funcției wp_enqueue_style().

Conform Codex, iată toți parametrii pe care wp_enqueue_style îi acceptă.

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

De exemplu, pentru a încărca o foaie de stil cu un număr de versiune, ai face următoarele:

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
Comentarii

când fac asta, se încarcă și vechiul fișier style.css. Cum îl pot elimina?

Toretto Toretto
14 mar. 2013 14:10:00

@VinodDalvi ce înțelegi prin "handle"? Nu știu despre asta, sunt nou în WordPress, te rog să mă ajuți.

Toretto Toretto
14 mar. 2013 14:14:44

@Toretto Fie tema ta îl include direct în header.php, fie tema ta îl încarcă cu un handle diferit (primul parametru). Soluția depinde și dacă editezi direct functions.php al temei tale sau dacă ai creat o temă copil.

helgatheviking helgatheviking
14 mar. 2013 14:15:07

@Toretto, $handle este afișat în răspunsul meu și este de asemenea descris în link-ul pe care l-am furnizat către pagina Codex pentru wp_enqueue_style, te rog să-ți faci temele.

helgatheviking helgatheviking
14 mar. 2013 14:15:59

@helgatheviking cum pot afla numele vechi al handler-ului.

Toretto Toretto
14 mar. 2013 14:18:39

@Toretto Dacă tema ta folosește wp_enqueue_style() pentru a încărca fișierul de stil în cauză, atunci handle-ul este primul parametru. Dacă tema ta include fișierul de stil direct în header.php, atunci nu va avea un handle.

helgatheviking helgatheviking
14 mar. 2013 14:22:54

ok, am înțeles, am înlocuit funcția de stil a temei mele implicite și a început să funcționeze. mulțumesc mult @helgatheviking.

Toretto Toretto
14 mar. 2013 14:23:39
Arată celelalte 2 comentarii
1
22

Dacă ești dezvoltator de teme, poate vei dori să forțezi reîncărcarea resurselor atunci când lansezi o nouă versiune.

Versiunea unei teme este definită în style.css:

/*
    Theme Name: Numele Temei Tale
    Version: 1.0.2
*/

La începutul fișierului functions.php:

$theme = wp_get_theme();
define('THEME_VERSION', $theme->Version); //preia versiunea scrisă în style.css

Ulterior, când încarci CSS sau JS, folosește THEME_VERSION ca al patrulea argument:

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

Va afișa în pagină:

.../numele-temei-tale/css/main.css?ver=1.0.2 

Este util atunci când ai mai multe resurse de gestionat și nu dorești să le modifici manual.

1 oct. 2019 22:52:52
Comentarii

Am folosit această metodă pentru un theme child, așa că am utilizat get_stylesheet_directory_uri() în loc de get_template_directory_uri()

Carlos Carlos
7 apr. 2021 15:40:25
4
14

În loc să specificați manual versiunea, puteți considera mai util în anumite situații să versionați dinamic fișierul CSS, astfel încât de fiecare dată când îl modificați, versiunea să se actualizeze automat și să reîncarce cache-ul browserului imediat, fără a fi nevoie să editați functions.php în mod repetat.

Puteți utiliza funcția filemtime() pentru a realiza acest lucru. Iată cum puteți face acest lucru într-un fișier child-style care face referire la 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
Comentarii

De-a lungul timpului, am ajuns să prefer versiunile temelor, dar este o idee excelentă să folosești filemtime() aici, dacă nu ai o practică consistentă de versionare a temelor.

jgangso jgangso
14 mar. 2018 13:49:42

Aceasta este o soluție excelentă! Tocmai am folosit array() pentru al treilea parametru deoarece folosesc o temă personalizată fără părinte și a funcționat perfect.

cam cam
19 aug. 2021 01:24:57

Cred că aceasta este o soluție bună, poți în continuare să folosești ceva de genul "1.2.0" în style.css, nu este necesar să afișezi acest lucru în DOM unde CSS-ul este încărcat.

herrfischer herrfischer
1 mar. 2024 11:26:01

Este uimitor, funcționează perfect!! Mulțumesc pentru asta.

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

Puteți realiza acest lucru folosind una dintre următoarele metode:

1) Adăugați următoarea etichetă în fișierul header.php al temei.

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

2) Adăugați următorul cod în fișierul functions.php al temei.

function theme_styles()  
{ 
  // Înregistrați stilul astfel pentru o temă:  
  // (Mai întâi numele unic pentru stil (custom-style) apoi src, 
  // apoi dependențele, versiunea și tipul media)
  wp_enqueue_style( 'style-css', get_template_directory_uri() . '/style.css', array(), '1.2', 'all' );
}
add_action('wp_enqueue_scripts', 'theme_styles');

Pentru mai multe informații, consultați această pagină.

14 mar. 2013 14:01:01
Comentarii

când fac asta, se încarcă și vechiul fișier style.css. Cum îl pot elimina?

Toretto Toretto
14 mar. 2013 14:10:19

Care este handle-ul pentru vechiul style.css?

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

dacă nu poți găsi handle-ul, atunci doar copiază și lipește întregul URL al style.css aici... voi extrage informația de acolo...

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

Sau poți să-mi spui cum se numește tema ta sau numele folderului temei?

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

ok, am înțeles. Am înlocuit funcția de stil a temei implicite și a început să funcționeze. mulțumesc. +1 de la mine.

Toretto Toretto
14 mar. 2013 14:24:22

Cu plăcere .... :)

Vinod Dalvi Vinod Dalvi
14 mar. 2013 14:25:22
Arată celelalte 1 comentarii
1

cel mai bun mod de a încărca CSS în tema ta WordPress este următorul cod în fișierul functions.php:

function theme_styles()  
{ 
  global $ver_num; // definim variabilă globală pentru numărul de versiune
  $ver_num = mt_rand() // la fiecare apel/încărcare a stilului, $ver_num va primi o valoare diferită
  wp_enqueue_style( 'style-css', get_template_directory_uri() . '/style.css', array(), $ver_num, 'all' );
}
add_action('wp_enqueue_scripts', 'theme_styles');

Acesta este modul corect de a încărca stilurile în tema ta și este de asemenea optim pentru scopuri de staging/testare deoarece la fiecare reîmprospătare se va încărca versiunea actualizată a stilului.

Dacă dorești să eviți prima metodă de încărcare, poți folosi această variantă prescurtată și poți plasa următoarea linie în fișierul header.php pentru a obține același rezultat:

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

Noroc

8 iun. 2015 11:40:56
Comentarii

Aceasta este o idee proastă, deoarece forțează descărcarea fișierelor din nou și din nou la fiecare încărcare de pagină.

Sobral Sobral
13 iun. 2024 22:24:46
0

Încearcă asta:

Adaugă acest cod în 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();
}

Adaugă în header sau footer -> autoVer('/js/main.js');

16 mar. 2017 10:52:55
0

Contrar metodelor prezentate până acum, cred că este mai bine să folosești numărul de versiune care apare în partea de sus a fișierului style.css:

// style.css
/**
Nume Temă: Tema mea
...
Versiune: 1.2.3
...
**/

Pentru a folosi versiunea temei în CSS-ul tău, adaugă următoarele în fișierul functions.php (sau echivalent):

<?php

wp_enqueue_style(
    'my-theme',
    get_stylesheet_directory_uri() . '/style.css',
    [],
    wp_get_theme()->get('Versiune')
);

Aceasta înseamnă că, după ce editezi fișierul style.css, tot ce trebuie să faci este să modifici numărul de versiune din partea de sus a aceluiași fișier pentru a vedea modificările în frontend.

Dacă examinezi secțiunea head a HTML-ului temei, vei vedea următoarele:

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

O altă soluție, dacă încă nu ai reușit să rezolvi problema, este să schimbi numele fișierului style.css al temei child în, de exemplu, style2.css și apoi să modifici fișierul functions.php al temei child, așa cum este arătat mai jos:

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

Această modificare va determina WordPress să solicite și să servească un nou fișier CSS pentru site-ul tău.

22 iul. 2020 02:20:25
2

Aici folosim funcția WordPress wp_get_theme() pentru a obține versiunea temei (așa cum este specificat în fișierul de stil al temei, style.css):

// obține versiunea temei
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 iun. 2021 08:13:12
Comentarii

Nu cred că acesta răspunde la întrebare, care era cum să adaugi numărul versiunii la URL-ul CSS, presupun că pentru a evita cache-ul.

Rup Rup
13 iun. 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 iun. 2021 11:13:12
0

De fapt, nu este necesar să eliminați cache-ul pentru fișierul style.css.

Puteți crea propriul fișier CSS și apoi să-l încărcați în coadă așa cum a scris @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');

Conform regulilor browserelor, cel mai recent fișier CSS are prioritate mai mare, așa că asigurați-vă că folosiți !important în codul CSS dacă este necesar.

Mult succes.

10 aug. 2021 14:29:00
1
-1

Acesta este un mod simplu de a obține numărul de versiune prin apelarea funcției bloginfo($show) de două ori. Prima dată pentru fișierul de stil și a doua oară pentru numărul de versiune.

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

Acesta este tot ce trebuie făcut. Sper că acest lucru vă este de ajutor sau util. Puteți parcurge toți parametrii disponibili și vedea ce puteți afișa cu funcția bloginfo().

Ignorați comentariul meu deoarece @Ravs a atras atenția asupra erorii mele privind parametrul 'versions' pentru funcția bloginfo(). Într-adevăr, acesta afișează numărul de versiune WordPress.

5 iun. 2013 23:49:07
Comentarii

Cred că nu este răspunsul corect deoarece <?php bloginfo('version')?> vă oferă versiunea curentă WordPress, în timp ce întrebarea se referă la adăugarea versiunii fișierului style.css, nu la versiunea WordPress.

Ravinder Kumar Ravinder Kumar
6 iun. 2013 02:25:55