Не удается заставить дочернюю тему загружать последнюю версию style.css

20 мая 2014 г., 15:54:33
Просмотры: 18.6K
Голосов: 11

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

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

Я заметил, что при просмотре исходного кода к таблице стилей добавляется номер версии вот так:- style.css?ver=3.9.1 хотя я не создавал никакой версии!

На другом моем сайте нет версионирования таблицы стилей, так почему оно добавляется автоматически, когда мне это не нужно?

Как заставить систему использовать самую свежую версию style.css дочерней темы без версионирования?

Вот URL моего сайта:- http://www.peterswebservices.co.uk/

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

Кэширование браузера — это наиболее очевидная возможность, но серверное кэширование может вызывать тот же эффект, как и различные "ускорители" интернета, которые предлагают некоторые провайдеры и независимые сайты.

s_ha_dum s_ha_dum
20 мая 2014 г. 15:57:50

Версия, которую вы видите — это просто текущая версия WordPress, которая автоматически добавляется системой. Не стоит беспокоиться по этому поводу.

Pieter Goosen Pieter Goosen
20 мая 2014 г. 16:00:56

@PieterGoosen Проблема автора связана с этим параметром версии, который мешает загрузке актуальной css-версии. Очень тревожно. Так зачем он там и как его можно убрать?

Ralf Ralf
30 авг. 2024 г. 17:35:03
Все ответы на вопрос 5
1

В теме twentyfourteen попробуйте добавить это в дочернюю тему:

function add_require_scripts_files() {
 wp_enqueue_style('twentyfourteen-style', get_stylesheet_directory_uri().'/style.css', array(), '1.0.0', "all");        
}
add_action( 'wp_enqueue_scripts', 'add_require_scripts_files' );

Это заменит оригинальную таблицу стилей на вашу собственную версию. Если вы используете другую родительскую тему, посмотрите оригинальный ярлык wp_enqueue_style для style.css и продублируйте его в своей дочерней теме. Вам нужно будет менять версию 1.0.0 на другую при каждом изменении (поэтому это лучше подходит для рабочих окружений, где изменения вносятся не так часто).

Чтобы полностью удалить версию из скриптов и стилей, попробуйте это:

// удаление тега версии WP из скриптов и стилей, лучше для dev-окружений
// от Adam Harley https://wordpress.org/support/topic/enqueueregister-script-remove-version
add_filter( 'script_loader_src', 'remove_src_version' );
add_filter( 'style_loader_src', 'remove_src_version' );
function remove_src_version ( $src ) {
  global $wp_version;
  $version_str = '?ver='.$wp_version;
  $version_str_offset = strlen( $src ) - strlen( $version_str );
  if( substr( $src, $version_str_offset ) == $version_str )
    return substr( $src, 0, $version_str_offset );
}
27 сент. 2014 г. 05:46:23
Комментарии

Этот код убивает мой сайт. Возможно, только для старых версий WP?

Ralf Ralf
30 авг. 2024 г. 17:37:11
0

Добавление приведенной ниже функции в 'functions.php' дочерней темы, которую я использовал с X, очень помогло мне в аналогичной ситуации.

add_action( 'wp_enqueue_scripts', 'enqueue_child_theme_styles', PHP_INT_MAX);
function enqueue_child_theme_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' );
    wp_enqueue_style( 'child-style', get_stylesheet_uri(), NULL, filemtime( get_stylesheet_directory() . '/style.css' ) );
}

Только не забудьте удалить это перед запуском вашего сайта в продакшн.

Также учитывайте функции кэширования вашего хостинг-провайдера, чтобы изменения вступили в силу.

Согласно автору:

... это лучший способ подключения таблицы стилей дочерней темы в WordPress в сочетании с filemtime(), чтобы заставить браузеры загружать новые версии css-файлов. Я не использовал filemtime() для родительского стиля, так как никогда его не изменяю, и поэтому filemtime() только тратил бы ресурсы.

Источник: Комментарий Daniel от 22 октября 2014 к статье Предотвращение кэширования CSS: https://css-tricks.com/snippets/wordpress/prevent-css-caching/#comment-1586141

28 окт. 2015 г. 19:35:38
1

Не видя сайт, мы не можем помочь диагностировать проблему, но часто бывает, что основной CSS темы имеет приоритет над CSS дочерней темы. Это можно переопределить, используя тег !important, например:

#element {
 color:#fff !important;
}

Тег !important помечает этот CSS как приоритетный над любым другим CSS-файлом с такой же строкой.

Сообщите нам URL и помогло ли это.

20 мая 2014 г. 15:59:22
Комментарии

Я не думаю, что проблема в !important, но вот мой URL:-http://www.peterswebservices.co.uk/ Также, когда я использую инспектор в Google Chrome и углубляюсь в CSS-файл, он показывает предыдущую версию без последних изменений.

user1199360 user1199360
20 мая 2014 г. 16:06:50
1

У меня была такая же проблема, и оказалось, что у моего нового хостинга по умолчанию включено какое-то кэширование. Я зашел в панель управления и очистил кеш, после чего правильный файл style.css начал загружаться корректно.

Параметр ?ver=3.9.1 оказался ложным следом (по крайней мере в моем случае). После очистки кеша он по-прежнему отображается как ?ver=3.9.1, хотя такого параметра нет в моем css-файле, но все работает нормально.

11 июл. 2014 г. 09:16:42
Комментарии

Параметр ?ver=3.9.1 автоматически добавляется WordPress. Это текущая версия WordPress и не имеет никакого отношения к вашей теме :-)

Pieter Goosen Pieter Goosen
11 июл. 2014 г. 09:52:11
0

У меня была такая же проблема, и я решил её другим способом, отличным от стандартного.

Сначала я нашёл файл, который нужно изменить:

wp-includes\theme.php

В этом файле есть функция под названием get_stylesheet_uri

Моя функция выглядит следующим образом:

function get_stylesheet_uri() {
    $time = time();
    $stylesheet_dir_uri = get_stylesheet_directory_uri();
    $stylesheet_uri = $stylesheet_dir_uri . '/style.css?v='.$time;
    /**
     * Фильтр для URI текущего файла стилей темы.
     *
     * @since 1.5.0
     *
     * @param string $stylesheet_uri     URI файла стилей для текущей темы/дочерней темы.
     * @param string $stylesheet_dir_uri URI директории стилей для текущей темы/дочерней темы.
     */
    return apply_filters( 'stylesheet_uri', $stylesheet_uri, $stylesheet_dir_uri );
}
7 сент. 2016 г. 17:18:11