Как изменить версию .css файла в WordPress?

29 нояб. 2016 г., 04:45:18
Просмотры: 55.6K
Голосов: 15

Как следует из заголовка, я не совсем уверен, как изменить версию .css файла в моей теме. На данный момент версия .css файла выглядит так:

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

Нужно ли запускать какой-то скрипт - где мне искать возможность изменить версию на 4.6.2, как указано выше?

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

Как вы заставляете этот скрипт выводить данные?

Nathan Powell Nathan Powell
29 нояб. 2016 г. 04:51:44
Все ответы на вопрос 4
3
19

Четвёртый аргумент $ver для функции wp_enqueue_style() позволяет задать версию стиля:

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

Согласно документации:

$ver (string|bool|null) (Необязательный) Строка, указывающая номер версии таблицы стилей, если она есть. Эта версия добавляется к URL в виде строки запроса для сброса кеша. Если версия установлена в false, автоматически добавляется номер версии, равный текущей установленной версии WordPress. Если установлено значение null, версия не добавляется. Значение по умолчанию: false

29 нояб. 2016 г. 04:53:32
Комментарии

Спасибо за это - думаю, мой вопрос звучит как "как это сделать", то есть "как запустить этот скрипт для генерации новой версии"? Надеюсь, это понятно...

Henry Henry
29 нояб. 2016 г. 04:55:01

Не могли бы вы обновить ваш вопрос, добавив код, где вызывается wp_enqueue_style()? WordPress автоматически обрабатывает управление версиями, как объяснено в моем ответе относительно параметра $ver, поэтому я предполагаю, что $ver установлен в false. Если вы хотите изменить это, замените аргумент $ver на новую строку (я бы не рекомендовал использовать 4.6.2, так как это соглашение уже используется WordPress), но технически это сработает.

Dave Romsey Dave Romsey
29 нояб. 2016 г. 04:58:39

Вы можете легко подставить что угодно. Например, $ver = time(); будет создавать новую версию каждый раз при загрузке страницы, а версия будет соответствовать времени.

Nathan Powell Nathan Powell
29 нояб. 2016 г. 04:59:55
1

В большинстве тем используется функция wp_enqueue_style() внутри файла functions.php для добавления таблицы стилей в заголовок. Вот как узнать, делает ли это ваша тема.

Откройте файл wp-content/themes/ИМЯ_ВАШЕЙ_ТЕМЫ/functions.php и найдите строку, которая добавляет таблицу стилей, например:

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

Или так:

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

Вы можете выполнить поиск по ID (за исключением части -css)... если ID имеет вид main_style-css, ищите просто main-style в файле functions.php, и вы, скорее всего, найдёте нужную строку кода.

Теперь, когда вы нашли код и знаете, что ваша тема добавляет эту таблицу стилей с помощью функции wp_enqueue_style() в файле functions.php, вам нужно обновить этот код, чтобы добавить версию.

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

Как видите, этот код получает время последнего изменения файла style.css с помощью PHP-функции filemtime() и также преобразует время в timestamp с помощью функции time(), чтобы сделать всё аккуратно.

Если вы не хотите, чтобы версия менялась динамически каждый раз, вы можете просто сделать так:

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

Вот и всё. Удачи!

30 нояб. 2016 г. 23:38:05
Комментарии

Внимание: вам следует использовать get_stylesheet_directory() внутри filemtime(), так как это вернет системный путь.

Rob W Rob W
14 июл. 2017 г. 01:17:26
0

Я не получил много пользы из этих ответов, поэтому решил написать, что сработало у меня. В кодексе сказано:

$ver (string|bool|null) (Необязательный) Строка, указывающая версию таблицы стилей, если она есть, которая добавляется к URL в виде строки запроса для обхода кеша. Если версия установлена в false, автоматически добавляется номер версии, равный текущей установленной версии WordPress. Если установлено в null, версия не добавляется. Значение по умолчанию: false

Но это очень загадочно объясняет, как это на самом деле работает. Я не мог заставить номер версии в wp_enqueue_style добавить параметр запроса типа ?ver=1.2.3 к моему файлу стилей. Однако установка значения в true позволяет объявленной версии в таблице стилей обойти кеш (читайте дальше).

Внутри вашего style.css вы должны указать название вашей темы. Это требуется WordPress. Однако другие параметры, такие как version, это то, на что ссылается булево значение версии в wp_enqueue_style.

/******************************************************************
Название сайта: MySite.com
Автор: @BenRacicot
Версия: 4.0 // <- номер версии для wp_enqueue_style
Таблица стилей: Основная таблица стилей
******************************************************************/

Теперь, когда я изменяю это на Версия: 4.1, я получаю style.css?cache-bust=0.24135995238933283

31 июл. 2017 г. 17:16:06
1

Вы можете просто использовать time() во время подключения стилей или скриптов следующим образом..

Без использования функции 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' />

С использованием функции wp_enqueue_style()

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

ИЛИ

wp_enqueue_style('style_sheet_name', get_stylesheet_uri() . '/custom_style.css', '', time());
8 февр. 2018 г. 08:52:53
Комментарии

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

Fabian von Ellerts Fabian von Ellerts
28 мар. 2019 г. 10:33:05