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\' );