像@pieter-goosen 和@birgire 在其他答复和评论中,W3C specs 不允许在页脚中使用css,引用规范页面链接:
A.link
元素必须具有rel
属性
如果rel
属性,则元素限制为head
要素
除此之外,您应该注意,当您在页脚中添加css时,当有人打开您的页面时,它会显示为未设置样式,直到加载完整的css为止:如果连接速度较慢,您的页面会出现几秒钟的中断,通过css隐藏的元素将可见,滑块显示为可见图像的ul列表。。。
所以,真的,我认为这是个坏主意。
也就是说,我不喜欢那种“不要那样做”的回答,我更喜欢那种“你可以这样做,但我建议你不要那样做”。
所以,这里是这样做的方法,但是嘿,我建议不要这样做。
正如您所期望的那样,事情变得更加简单:应该添加脚本和样式wp_enqueue_scripts
钩子,但如果您将样式排队after wp_head
钩子被激发,然后脚本和样式被添加到页脚中。
这方面的一个有用应用是,当脚本在短代码回调中排队时,可以轻松添加特定于短代码的脚本。
关于样式,WordPress对W3C语句并不是不妥协的,它会将样式无链接地放在页脚上。
工作流:
吊钩\'wp_print_styles\'
, 当所有脚本和样式都已排队但未打印时,将脚本和样式的当前队列存储在变量中,清空脚本和样式的队列,这样,当WordPress查找打印头中的脚本和样式时,将找不到要打印的内容\'wp_footer\'
使用优先级0,恢复存储在点2的样式和脚本队列,这样,当WordPress查找要在页脚中打印的样式和脚本时,页脚可以找到并打印它们只需几行代码即可完成所有操作:
add_action(\'wp_print_styles\', function() {
if ( ! doing_action( \'wp_head\' ) ) { // ensure we are on head
return;
}
global $wp_scripts, $wp_styles;
// save actual queued scripts and styles
$queued_scripts = $wp_scripts->queue;
$queued_styles = $wp_styles->queue;
// empty the scripts and styles queue
$wp_scripts->queue = array();
$wp_styles->queue = array();
$wp_scripts->to_do = array();
$wp_styles->to_do = array();
add_action( \'wp_footer\', function() use( $queued_scripts, $queued_styles ) {
// reset the queue to print scripts and styles in footer
global $wp_scripts, $wp_styles;
$wp_scripts->queue = $queued_scripts;
$wp_styles->queue = $queued_styles;
$wp_scripts->to_do = $queued_scripts;
$wp_styles->to_do = $queued_styles;
}, 0 );
}, 0);
注:上述代码要求PHP 5.3+用于闭包,WP 3.9用于
doing_action
.