Как добавить версию style.css в WordPress

14 мар. 2013 г., 13:46:53
Просмотры: 94.1K
Голосов: 25

Как добавить версию файла style.css в WordPress, как я могу это сделать в Joomla.

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

Я знаю, что style.css загружается динамически. Пожалуйста, помогите мне разобраться, как это сделать.

1
Комментарии

Вот плагин https://wordpress.org/plugins/wp-css-version-history/, который автоматически добавляет номер версии в таблицу стилей. Он создает новую таблицу стилей, которая загружается последней. Нет необходимости очищать кеш для отображения изменений. Использует встроенный редактор CSS WordPress и блокировку файлов для совместной работы в команде.

Brian Holzberger Brian Holzberger
14 мая 2018 г. 15:04:48
Все ответы на вопрос 11
7
22

Номер версии является параметром функции wp_enqueue_style().

Согласно Codex, вот все параметры, которые принимает wp_enqueue_style:

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

Например, чтобы загрузить таблицу стилей с номером версии, вы можете сделать следующее:

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 мар. 2013 г. 13:54:19
Комментарии

когда я делаю это, старый style.css тоже загружается. Как его убрать?

Toretto Toretto
14 мар. 2013 г. 14:10:00

@VinodDalvi что ты имеешь в виду под handle. Я не знаю об этом, я новичок в WordPress, объясни мне пожалуйста.

Toretto Toretto
14 мар. 2013 г. 14:14:44

@Toretto Либо ваша тема жестко прописывает его в header.php, либо ваша тема также добавляет его с другим handle (первым параметром). Решение также зависит от того, редактируете ли вы напрямую functions.php вашей темы или создали дочернюю тему.

helgatheviking helgatheviking
14 мар. 2013 г. 14:15:07

@Toretto, $handle указан в моем ответе, а также описан по ссылке, которую я привел на страницу Codex для wp_enqueue_style. Пожалуйста, сделай свою домашнюю работу.

helgatheviking helgatheviking
14 мар. 2013 г. 14:15:59

@helgatheviking как мне узнать старое название обработчика (handler).

Toretto Toretto
14 мар. 2013 г. 14:18:39

@Toretto Если ваша тема использует wp_enqueue_style() для загрузки таблицы стилей, то её обработчик (handle) - это первый параметр. Если ваша тема жестко прописывает таблицу стилей в header.php, то у неё не будет обработчика.

helgatheviking helgatheviking
14 мар. 2013 г. 14:22:54

ок, я понял, я заменил функцию стилей моей стандартной темы, и всё заработало. большое спасибо @helgatheviking.

Toretto Toretto
14 мар. 2013 г. 14:23:39
Показать остальные 2 комментариев
1
22

Если вы разрабатываете темы, вам может понадобиться принудительная перезагрузка ресурсов при выпуске новой версии.

Версионирование темы указывается в файле style.css

/*
    Theme Name: Название вашей темы
    Version: 1.0.2
*/

В начале файла functions.php добавьте:

$theme = wp_get_theme();
define('THEME_VERSION', $theme->Version); // получает версию, указанную в style.css

Затем, при подключении CSS или JS используйте константу THEME_VERSION в качестве четвертого параметра:

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

В результате на странице будет выводиться:

.../your-theme-name/css/main.css?ver=1.0.2 

Это особенно удобно, когда у вас много ресурсов и вы не хотите менять их версии вручную.

1 окт. 2019 г. 22:52:52
Комментарии

Я использовал этот метод для дочерней темы, поэтому мы использовали get_stylesheet_directory_uri() вместо get_template_directory_uri()

Carlos Carlos
7 апр. 2021 г. 15:40:25
4
14

Вместо жесткого указания версии, в некоторых случаях может быть лучше динамически версионировать ваш файл стилей. Это позволит автоматически обновлять версию при каждом изменении файла, сразу же очищая кеш браузера без необходимости постоянно редактировать functions.php.

Для этого можно использовать функцию filemtime(). Вот как это реализовать в дочерней теме, которая ссылается на стиль родительской темы:

    wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( $parent_style ), filemtime( get_stylesheet_directory() . '/style.css' )  );
17 нояб. 2017 г. 20:28:52
Комментарии

Со временем я стал отдавать предпочтение версиям темы, но использование filemtime() здесь — отличная идея, если у вас нет последовательной практики версионирования тем.

jgangso jgangso
14 мар. 2018 г. 13:49:42

Это отличное решение! Я просто использовал array() для третьего параметра, так как работаю с кастомной темой без родительской, и это сработало идеально.

cam cam
19 авг. 2021 г. 01:24:57

Я считаю это хорошим решением. Вы по-прежнему можете использовать что-то вроде "1.2.0" в вашем style.css, но не обязательно отображать это в DOM, где загружается CSS.

herrfischer herrfischer
1 мар. 2024 г. 11:26:01

Это потрясающе, работает как часы!! Спасибо за это.

Patrick Reiner Patrick Reiner
23 мар. 2024 г. 15:35:57
6

Вы можете добиться этого одним из следующих способов:

1) Добавьте следующий тег в файл header.php вашей темы.

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

2) Добавьте следующий код в файл functions.php вашей темы.

function theme_styles()  
{ 
  // Регистрируем стиль для темы следующим образом:  
  // (Сначала уникальное имя стиля (custom-style), затем src, 
  // зависимости, версия и тип медиа)
  wp_enqueue_style( 'style-css', get_template_directory_uri() . '/style.css', array(), '1.2', 'all' );
}
add_action('wp_enqueue_scripts', 'theme_styles');

Для получения дополнительной информации см. эту страницу.

14 мар. 2013 г. 14:01:01
Комментарии

когда я делаю это, старый style.css тоже загружается. Как его убрать?

Toretto Toretto
14 мар. 2013 г. 14:10:19

Какой хэндл у старого style.css?

Vinod Dalvi Vinod Dalvi
14 мар. 2013 г. 14:13:52

если не можешь найти хэндл, просто скопируй и вставь полный URL style.css сюда... я его оттуда достану...

Vinod Dalvi Vinod Dalvi
14 мар. 2013 г. 14:19:35

Или вы можете сказать мне название вашей темы или имя папки темы?

Vinod Dalvi Vinod Dalvi
14 мар. 2013 г. 14:23:42

Ок, я разобрался. Я заменил функцию стилей моей темы по умолчанию, и это заработало. Спасибо. +1 от меня.

Toretto Toretto
14 мар. 2013 г. 14:24:22

Пожалуйста.... :)

Vinod Dalvi Vinod Dalvi
14 мар. 2013 г. 14:25:22
Показать остальные 1 комментариев
1

Лучший способ загрузки CSS в вашу тему WordPress — это следующий код в файле functions.php:

function theme_styles()  
{ 
  global $ver_num; // определяем глобальную переменную для номера версии
  $ver_num = mt_rand(); // при каждом вызове/загрузке стиля переменная $ver_num будет получать новое значение
  wp_enqueue_style( 'style-css', get_template_directory_uri() . '/style.css', array(), $ver_num, 'all' );
}
add_action('wp_enqueue_scripts', 'theme_styles');

Это правильный способ загрузки стилей в вашу тему, а также он идеально подходит для тестирования, так как при каждом обновлении страницы будет загружаться актуальная версия стиля.

Если вы хотите избежать первого способа, можно использовать сокращенную версию и поместить следующую строку в файл header.php — результат будет таким же:

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

Удачи!

8 июн. 2015 г. 11:40:56
Комментарии

Это плохая идея, так как она заставляет файлы загружаться снова и снова при каждой загрузке страницы.

Sobral Sobral
13 июн. 2024 г. 22:24:46
0

Попробуйте это:

Добавьте в 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();
}

Добавьте в header или footer вызов функции -> autoVer('/js/main.js');

16 мар. 2017 г. 10:52:55
0

В отличие от методов, представленных ранее, я считаю, что лучше использовать номер версии, указанный в верхней части вашего файла style.css:

// style.css
/**
Название темы: Моя тема
...
Версия: 1.2.3
...
**/

Чтобы использовать версию темы в вашем CSS, добавьте следующий код в файл functions.php (или аналогичный):

<?php

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

Это означает, что после редактирования файла style.css вам достаточно изменить номер версии в верхней части этого же файла, чтобы изменения отобразились во фронтенде.

Если вы посмотрите на секцию head HTML-кода темы, то увидите следующее:

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

Ещё одно решение, если вы до сих пор не разобрались — это изменить имя файла style.css вашей дочерней темы на, например, style2.css, а затем изменить его в файле functions.php вашей дочерней темы, как показано ниже:

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

Это заставит WordPress запрашивать и использовать новый CSS-файл для вашего сайта.

22 июл. 2020 г. 02:20:25
2

Здесь мы используем функцию WordPress wp_get_theme() для получения версии темы (как указано в таблице стилей темы style.css):

// получаем версию темы
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 июн. 2021 г. 08:13:12
Комментарии

Я не думаю, что это отвечает на вопрос, который заключался в том, как добавить номер версии к URL CSS, предположительно для сброса кеша.

Rup Rup
13 июн. 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 июн. 2021 г. 11:13:12
0

На самом деле вам не нужно сбрасывать кеш файла style.css.

Вы можете написать свой собственный CSS-файл и добавить его в очередь, как показано в примере от @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');

Согласно правилам браузеров, последний загруженный CSS-файл имеет более высокий приоритет, поэтому убедитесь, что используете !important в вашем CSS-коде, если это необходимо.

Удачи.

10 авг. 2021 г. 14:29:00
1
-1

Это довольно простой способ получения номера версии путем вызова функции bloginfo($show) дважды. Сначала для таблицы стилей, а затем для номера версии.

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

Вот и все, что нужно сделать. Надеюсь, это поможет или окажется полезным. Вы можете просмотреть все доступные параметры и посмотреть, что можно вывести с помощью функции bloginfo().

Проигнорируйте мой комментарий, так как @Ravs указал на мою ошибку относительно параметра 'version' для функции bloginfo(). Действительно, он выводит номер версии WordPress.

5 июн. 2013 г. 23:49:07
Комментарии

Я считаю, что это неверный ответ, потому что <?php bloginfo('version')?> выводит текущую версию WordPress, тогда как вопрос касается добавления версии style.css, а не версии WordPress.

Ravinder Kumar Ravinder Kumar
6 июн. 2013 г. 02:25:55