Làm thế nào để lưu trữ phá vỡ một style.css chủ đề con


8

Có thể có một số khía cạnh cho câu hỏi của tôi nhưng về bản chất tôi cảm thấy thật dễ dàng: làm thế nào để bạn chắc chắn các thay đổi đối với một chủ đề con style.cssđược truyền bá đúng cách trên bộ nhớ cache?

Tôi đã đọc ở một vài nơi rằng WP nên / sẽ đặt phiên bản WP nnnkhi tài nguyên được tìm nạp http://host/wp-content/themes/theme-child/style.css?ver=nnn. Trong phần cài đặt của tôi tại http://frightanic.com/ tôi thấy rằng phiên bản chủ đề gốc được sử dụng thay thế. Tôi có W3 Total Cache và CDN tại chỗ nhưng ngay cả khi chúng bị vô hiệu hóa, tài nguyên như wp-content/themes/frightanic/style.css?ver=3.0.7được yêu cầu. 3.0.7là phiên bản của chủ đề gốc Giải mã .

Nhưng nếu có thể, nếu tôi cập nhật CSS chủ đề con mà không cập nhật WP hoặc chủ đề gốc cùng một lúc, làm thế nào tôi có thể phá vỡ nó khỏi bộ nhớ cache?


Câu trả lời:


11

Nhận xét của @ dalbaeb cuối cùng dẫn đến các cuộc thảo luận sâu sắc và một giải pháp khả thi. Cảm ơn rất nhiều!

Tôi tin rằng lý do CSS chủ đề con của tôi được tải bằng cách sử dụng 'ver=<parent-theme-version>là vì tôi đã theo WP Codex trên các chủ đề con 1: 1. Của tôi functions.phpchứa điều này:

add_action('wp_enqueue_scripts', 'theme_enqueue_styles');
function theme_enqueue_styles() {
  wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
}

Mã tôi đã sử dụng lần đầu tiên được đề cập trong https://wordpress.stackexchange.com/a/182023/30783 nhưng nhiều trang web trên Internet đã sao chép nó (mà không cung cấp tín dụng phù hợp).

// Making sure your child theme has an independent version and can bust caches: https://wordpress.stackexchange.com/a/182023/30783
// Filter get_stylesheet_uri() to return the parent theme's stylesheet
add_filter('stylesheet_uri', 'use_parent_theme_stylesheet');
// Enqueue this theme's scripts and styles (after parent theme)
add_action('wp_enqueue_scripts', 'my_theme_styles', 20);

function use_parent_theme_stylesheet()
{
    // Use the parent theme's stylesheet
    return get_template_directory_uri() . '/style.css';
}

function my_theme_styles()
{
    $themeVersion = wp_get_theme()->get('Version');

    // Enqueue our style.css with our own version
    wp_enqueue_style('child-theme-style', get_stylesheet_directory_uri() . '/style.css',
        array(), $themeVersion);
}

Cập nhật 2017-01-26

Sổ tay chủ đề WP hiện tại hiện có một bản sửa lỗi thích hợp :: https://developer.wordpress.org/theme/advified-topics/child-theme/#3-enqueue-stylesheet


Đẹp! Nếu bạn trả lời câu hỏi của riêng bạn, bạn có thể chấp nhận câu trả lời của mình làm giải pháp.
phatskat

Tôi biết nhưng bạn phải đợi 2ngày cho đến khi chức năng đó khả dụng.
Marcel Stor

3
Sổ tay WP Theme hiện tại có một bản sửa lỗi thích hợp: developer.wordpress.org/theme/advified-topics/child-theme/
Kẻ

1

Điều này hoạt động tốt khi bạn thêm trực tiếp vào tiêu đề.php và làm mới bộ đệm mỗi khi bạn cập nhật tệp css của mình:

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

Nó hiển thị: style.css? 324932684 trong đó số là thời gian tệp được chỉnh sửa


1
Kiểu dáng nên được sử dụng wp_enqueue_stylethay vì mã hóa cứng.
bravokeyl

0

Điều này có thể làm việc là tốt. Sử dụng hàm php rand:

function theme_enqueue_styles() {

    $parent_style = 'parent-style';

    wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style',
        get_stylesheet_directory_uri() . '/style.css?'.rand(),
        array( $parent_style )
    );
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );

1
Đó không phải là một ý tưởng hay vì bạn muốn các tài sản đó có thể được lưu trữ bởi trình duyệt miễn là chúng không thay đổi.
Marcel Stor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.