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

9

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

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

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

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

Как я могу заставить его использовать самую последнюю версию файла Child style.css, а не версию?

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

user1199360
источник
1
Кэширование в браузере является наиболее очевидной возможностью, но кэширование на сервере может вызвать тот же эффект, что и веб-«ускорители», которые предлагают некоторые интернет-провайдеры и независимые сайты.
s_ha_dum
Часть версии, которую вы видите, это просто текущая версия WordPress, которая автоматически добавляется WordPress. Не нужно беспокоиться об этом.
Питер Гусен

Ответы:

4

В двадцать пятнадцать попробуйте поместить это в тему вашего ребенка:

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 на другое число каждый раз, когда вы вносите изменения (так что это лучше для производственных сред, где вы не часто вносите изменения).

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

// remove WP version tag from scripts and styles, best for dev environments
// by 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 );
}
whoaitsaimz
источник
4

Добавление приведенной ниже функции в «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' ) );
}

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

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

По мнению автора :

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

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

bubencode
источник
0

Не видя сайт, мы не можем помочь диагностировать проблему, но распространенная ситуация - главная тема, css имеет приоритет над дочерним css, вы можете отменить это с помощью !importantтега, например:

#element {
 color:#fff !important;
}

Важный тег помечает, что css имеет приоритет над любым другим файлом css с той же строкой css

Дайте нам знать URL, и если это поможет

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

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

? Ver = 3.9.1 оказалась красной сельдью (по крайней мере, для меня). После того, как я очистил кэш, он все еще говорит? Ver = 3.9.1, который не найден нигде в моем файле css, но все работает нормально.

Кит Джонсон
источник
1
?ver=3.9.1Автоматически добавляется WordPress. Это текущая версия WordPress и не имеет ничего общего с вашей темой :-)
Pieter Goosen
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;
    /**
     * Filter the URI of the current theme stylesheet.
     *
     * @since 1.5.0
     *
     * @param string $stylesheet_uri     Stylesheet URI for the current theme/child theme.
     * @param string $stylesheet_dir_uri Stylesheet directory URI for the current theme/child theme.
     */
    return apply_filters( 'stylesheet_uri', $stylesheet_uri, $stylesheet_dir_uri );
}
GorgE_MirO
источник