Bộ nhớ đệm và phiên bản cho rtl.css


7

Tôi đang sử dụng filemtime()để thêm số phiên bản cho các tệp .css.js khác nhau trong một chủ đề WordPress tùy chỉnh.

Tôi đã sử dụng câu trả lời được chấp nhận được mô tả ở đây như một hướng dẫn; tuy nhiên, tôi sử dụng các hàm wp_retister_style()wp_register_script()để đăng ký các tệp .css.js của mình và tải chúng qua wp_enqueue_style()wp_enqueue_script(). Ví dụ, tôi đang đăng ký tập tin sigle.css theo cách này:

wp_register_style('xyz_single', get_template_directory_uri() . '/css/single.css', false, filemtime(get_template_directory() . '/css/single.css'));

Tham số thứ tư trong hàm trên sẽ thêm ? Ver = nnnnnnnn vào biểu định kiểu. Kết quả cuối cùng sẽ được một cái gì đó giống như single.css? Ver = nnnnnnnn , nơi nnnnnnnn là một số đại diện các dấu thời gian của tập tin sửa đổi để esure tải lại nó khi tôi thay đổi chủ đề để các vấn đề bộ nhớ đệm được đưa về chăm sóc tắt.

Bây giờ, với câu hỏi của tôi.

Trong chủ đề yêu cầu của tôi, tôi sử dụng rtl.css , được tải tự động cho tôi khi wp_head()được gọi. Vậy làm cách nào để thêm rtl.css để bao gồm số phiên bản?


Thêm thông tin

Trong header.php , tôi đang tải style.css như sau:

<link href="<?php echo get_stylesheet_uri() . '?ver=' . filemtime(get_stylesheet_directory() . '/style.css'); ?>" rel="stylesheet" type="text/css" />

Tôi đang tải tất cả các bảng định kiểu khác bằng cách sử dụng wp_register_style()như được mô tả ở trên, tiếp theo là wp_enqueue_style(). Đây là một ví dụ:

wp_register_style('xyz_single', get_template_directory_uri() . '/css/single.css', false, filemtime(get_template_directory() . '/css/single.css'));

wp_enqueue_style('xyz-single');

Tuy nhiên, rtl.css được tự động tải khi tôi gọi wp_head()trong tệp.php . Xin vui lòng đọc bài viết tuyệt vời này về cách wp_head()tải rtl.css ; và do đó, câu hỏi của tôi, làm thế nào tôi có thể thêm số phiên bản vào rtl.css nếu nó được gọi tự động?


2
Làm thế nào nó được tải? vui lòng chỉnh sửa câu hỏi và giải thích. Ngoài ra, vui lòng giải thích ngữ cảnh, điều đó ngăn bạn xử lý rtl.css giống như cách bạn xử lý style.css
Mark Kaplun 7/215

@MarkKaplun - Cảm ơn, tôi đã cập nhật câu hỏi. Tôi hy vọng điều này giải thích nó.
Greeso 7/2/2015

Câu trả lời:


6

Bạn đang tải rtl.css bằng cách tự động WordPress, nghĩa là có rtl.css trong thư mục chủ đề sẽ được WordPress tự động tải nếu nó trình bày và hướng ngôn ngữ hiện tại ir rtl (bạn nên thêm thông tin này vào câu hỏi , thật khó để tìm ra cách bạn đang tải tệp). Quá trình này xác định locale_stylesheet_urirằng bạn có thể sử dụng để sửa đổi URL biểu định kiểu, vì vậy bạn có thể thêm tham số phiên bản cho nó:

add_filter( 'locale_stylesheet_uri', function ($localized_stylesheet_uri) {
    $time_ver = filemtime( get_stylesheet_directory() . '/rtl.css' );
    return add_query_arg( array('ver' => $time_ver), $localized_stylesheet_uri );
});

Nếu bạn cũng cần xử lý các phụ thuộc, bạn sẽ phải tải tệp rlt.csswp_enqueue_style giống như bất kỳ tệp css nào khác. Không có cách xử lý phụ thuộc với cách "tự động".


2

Dựa trên bài viết mà bạn đã chỉ ra, có vẻ như có hai tùy chọn đơn giản

  1. ngăn chặn sự bao gồm tự động bằng cách loại bỏ các hành động làm cho nó được thêm vào,

remove_action( 'wp_head', 'locale_stylesheet' );

và enqueue nó với mã của riêng bạn, một cái gì đó như

global $$wp_locale; 

$stylesheet_dir_uri = get_stylesheet_directory_uri();
$dir = get_stylesheet_directory();
$locale = get_locale();


if ( !empty($wp_locale->text_direction) && file_exists("$dir/{$wp_locale->text_direction}.css") )
        enqueue "$stylesheet_dir_uri/{$wp_locale->text_direction}.css";
  1. sử dụng 'locale_stylesheet_uri'bộ lọc và thêm bất kỳ hậu tố nào bạn thích vào url hoặc chỉ cần quay lại ''và tự mình xử lý nó như trong # 1
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.