Rtl.css的缓存和版本控制

时间:2015-02-07 作者:Greeso

我正在使用filemtime() 为不同的.css.js 自定义WordPress主题中的文件。

我用了accepted answer described here 作为指南;但是,我使用wp_retister_style()wp_register_script() 注册my的函数.css.js 文件,并通过wp_enqueue_style()wp_enqueue_script(). 例如,我正在注册sigle.css 按以下方式归档:

wp_register_style(\'xyz_single\', get_template_directory_uri() . \'/css/single.css\', false, filemtime(get_template_directory() . \'/css/single.css\'));
上述函数中的第四个参数将添加?ver=nnnnnnnn 到样式表。最终输出如下single.css?ver=nnnnnnnn, 哪里nnnnnnnn 是一个数字,表示修改后的文件的时间戳,以便在修改主题时确保重新加载,从而解决缓存问题。

现在,回答我的问题。

在我的自定义主题中,我使用rtl.css, 当wp_head() 被调用。那么如何附加rtl.css 是否包含版本号?

更多信息,请参见header.php, 我正在加载style.css 具体如下:

<link href="<?php echo get_stylesheet_uri() . \'?ver=\' . filemtime(get_stylesheet_directory() . \'/style.css\'); ?>" rel="stylesheet" type="text/css" />
我正在使用加载所有其他样式表wp_register_style() 如上所述,然后是wp_enqueue_style(). 以下是一个示例:

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\');
然而,rtl.css 在我呼叫时自动加载wp_head() 在里面header.php. 请read this great article 关于如何wp_head() 负载rtl.css; 因此,我的问题是,如何在rtl.css 是否自动调用

2 个回复
最合适的回答,由SO网友:cybmeta 整理而成

您正在加载rtl.css 使用WordPress自动方式,即rtl.css 如果WordPress显示当前语言ir rtl的方向,则会自动加载主题文件夹(您应该将此信息添加到问题中,很难确定您是如何加载文件的)。此过程定义locale_stylesheet_uri 可用于修改区域设置样式表URL,以便向其中添加版本参数:

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 );
});
如果还需要处理依赖项,则必须加载rlt.css 使用文件wp_enqueue_style 就像其他css文件一样。无法使用“自动”方式处理依赖关系。

SO网友:Mark Kaplun

根据您所指的文章,似乎有两个简单的选择

通过删除使其添加的操作来防止自动包含

remove_action( \'wp_head\', \'locale_stylesheet\' );

并将其与您自己的代码排队,类似

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";
使用\'locale_stylesheet_uri\' 过滤,并在url中添加任何您喜欢的后缀,或者只返回\'\' 然后自己排队,就像#1

结束

相关推荐

Nonces and Cache

很明显,表单提交和AJAX请求,尤其是合理的请求,需要“nonces”来避免某些攻击。然而,随着高速缓存系统的大量使用,很难生成它们并输出新的nonce而不是高速缓存的nonce。为了解决这个问题,我考虑创建一个AJAX函数,返回一个新的nonce,在提交表单之前进行请求。然后,此nonce将作为隐藏字段附加到表单中。你认为这是一种安全的方法吗?返回新nonce的PHP函数:function create_nonce() { return wp_create_nonce(\'my-nonc