问题描述
我尝试在我的主题中创建登录页面。很简单:
add_action( 'login_enqueue_scripts', function()
{
wp_enqueue_style( 'TEST', get_template_directory_uri() . '/css/login.css' );
});
不幸的是,它不按预期工作。 link
元素出现在登录页面的 body
中,很晚。
渲染输出:
<link rel='stylesheet' id='TEST-css' href='http://themes.wp/t5-theme-base/css/login.css?ver=3.9-alpha' type='text/css' media='all' />
<div class="clear"></div>
</body>
</html>
这是错误的,如何在 head
中打印链接元素?
最佳解决方案
对于每个 enqueue
动作,都有相应的 print_styles
动作:
-
wp_enqueue_scripts
→wp_print_styles
-
admin_enqueue_scripts
→admin_print_styles
-
customize_controls_enqueue_scripts
→customize_controls_print_styles
不是登录页面。没有 login_print_styles
动作或功能,所以您的样式表会抛出 do_action( 'login_footer' );
。
但是有一个简单的修复:
if ( ! has_action( 'login_enqueue_scripts', 'wp_print_styles' ) )
add_action( 'login_enqueue_scripts', 'wp_print_styles', 11 );
WordPress 现在将在该页面上注册的所有 link
元素在恰当的位置,即 head
元素之后,紧跟在内置样式表之后。
结果:
<link rel='stylesheet' id='dashicons-css' href='http://git.wp/wp-includes/css/dashicons.min.css?ver=3.9-alpha' type='text/css' media='all' />
<link rel='stylesheet' id='wp-admin-css' href='http://git.wp/wp-admin/css/wp-admin.min.css?ver=3.9-alpha' type='text/css' media='all' />
<link rel='stylesheet' id='buttons-css' href='http://git.wp/wp-includes/css/buttons.min.css?ver=3.9-alpha' type='text/css' media='all' />
<link rel='stylesheet' id='colors-fresh-css' href='http://git.wp/wp-admin/css/colors.min.css?ver=3.9-alpha' type='text/css' media='all' />
<!--[if lte IE 7]>
<link rel='stylesheet' id='ie-css' href='http://git.wp/wp-admin/css/ie.min.css?ver=3.9-alpha' type='text/css' media='all' />
<![endif]-->
<link rel='stylesheet' id='TEST-css' href='http://themes.wp/t5-theme-base/css/login.css?ver=3.9-alpha' type='text/css' media='all' />
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。