WordPress不加载样式表打印顺序themes\' alternative rtl.css files 使用wp_register_style() 或wp_enqueue_style(). 因此,样式表不会添加到WordPress的样式队列中,并且在注册其他样式表或将其加入队列时,不能将其指定为依赖项。
相反,此样式表<link> 元素通过添加the locale_stylesheet() function, 连接到wp_head 行动wp_print_styles is hooked to the wp_head action with a priority of 8 while locale_stylesheet() has the default priority of 10, 这意味着您排队使用的所有样式wp_enqueue_style() 将always 打印出来before rtl.css.
Note
locale_stylesheet() 呼叫
the get_locale_stylesheet()
function 以确定要加载的区域设置相关主题样式表。首先,它寻找
{locale}.css (即。
en_US.css) - 如果文件不存在,它接下来会查找
{text-direction}.css (即。
rtl.css 或
ltr.css). 请记住,如果您提供
{locale}.css 当前区域设置的样式表WordPress
will not 自动加载
rtl.css解决方案有几种方法可以修改此行为,但应该注意,它的存在是有原因的-通过加载rtl.css 在所有排队的样式表之后,WordPress为主题提供了重写插件等提供的任何CSS规则的机会,否则这些规则只支持从左到右的语言。我在下面提供的所有解决方案大多都消除了这种可能性,如果任何插件依赖于WordPress的默认行为,则可能会产生冲突(我无法想象许多插件会这样做)。
如果您阻止WordPress自动加载rtl.css 文件,您可以将其视为任何其他样式表,从而控制脚本加载的时间。有两种方法可以实现这一点:
钩住an action that fires before wp_head 并删除locale_stylesheet()\'s挂钩:
function remove_locale_stylesheet() {
remove_action( \'wp_head\', \'locale_stylesheet\' );
}
add_action( \'init\', \'remove_locale_stylesheet\' );
重命名您的
rtl.css 文件到其他文件(不是
ltr.css 或
{locale}.css).
完成上述操作之一后,按照通常的方式将RTL样式表排队-有条件地is_rtl() 如果您还希望支持LTR语言。
反向wp_head\'s样式表打印顺序wp_head 和给予locale_stylesheet()\'s挂钩优先级低于wp_print_styles, 你可以强制rtl.css 始终在之前加载wp_enqueue_style()\'d样式表,有效地使每个排队的样式表都依赖于rtl.css:
function load_locale_style_first() {
remove_action( \'wp_head\', \'locale_stylesheet\' );
add_action( \'wp_head\', \'locale_stylesheet\', 7 );
}
add_action( \'init\', \'load_locale_style_first\' );