我现在正在使用WordPress 3.1.4。我对在哪里使用哪个钩子感到困惑:


在前端和后端注册和/或排队
脚本和样式


问题:


哪个是正确的钩子?
init中的所有前端寄存器/队列脚本/样式是什么?
为什么没有admin_print_styles-{xxx}吗?


#1 楼

为什么正确注册和排队很重要


应该及时-早于脚本/样式输出到页面,否则为时已​​晚;
应该及时有条件的-否则,您将在不需要的地方加载东西,并导致性能和功能问题,为此,您需要将WP环境加载到后期。

过程的三个阶段


注册-解释WP有关脚本/样式的详细信息并使其存储该信息;
入队-(通常与qq120120q调用中的寄存器一起使用)-告诉WP添加脚本/
print-当WP处理队列,尝试加载特定于其自身的内容或使用wp_enqueue_*()函数显式地执行此操作时,会发生这种情况。 />
功能和挂钩的前端结构



wp_print_*()




wp_head()



(1) wp_head

wp_enqueue_scripts()«这就是您需要的

(8)wp_enqueue_scripts
(9)wp_print_styles()






wp_print_head_scripts()



wp_footer()




(10)wp_footer







它会更深入,但这对于重点很简单并且足够好:


wp_print_footer_scripts()是最适合在前端注册和排队脚本和样式的钩子,它专门为此而设计;
wp_enqueue_scripts与这无关,它可以工作,但是-过去的法典建议使用只是不正​​确;
您可以在init调用之前的任何时候放弃页脚的排队脚本(不是样式);
wp_print_footer_scripts()钩子不适用于寄存器/队列,它们是输出时代码中的点已经发生了。它们适合于手动/自定义脚本/样式输出。

管理员呢?

好吧,那里的功能更加复杂,复杂和嵌套。


对于初学者而言,只需对所有内容使用wp_print_*钩子(已将admin_enqueue_scripts全局传递给有条件的东西),它将很好地用于大多数情况下;
当您需要复杂的东西时-查看$hook_suffix并从那里挖掘合适的钩子。

登录该怎么办?

有一个名为admin-header.php的特定钩子。

评论


嗯,在另一个问题的另一个答案中,建议我使用admin_print_scripts- {xxx}。我发现调用了admin_print_scripts,但未调用-{xxx}。 -edit.php为例。排队进入admin_print_scripts-xxx的答案有多正确,您会推荐什么?-假设我想在自定义帖子类型添加/编辑页面(用于metabox)中包含脚本/样式

– JM在工作
2011年6月30日9:33

我个人认为,@ JM在工作中-除非您真的知道为什么需要它们,否则请不要使用* print *钩子。总体而言,它们用于打印,而不是用于队列。 admin_enqueue_scripts挂钩传递$ hook_suffix变量,该变量与那些动态挂钩中使用的变量相同。

–稀有
2011年6月30日9:40

$ hook_suffix在我的编辑投资组合页面中看起来像post.php,为什么?我还以为是edit.php,然后如何确定我是否正在编辑/发布投资组合而不是正常发布?

– JM在工作
2011年7月8日在2:44

老实说,@ JM在变量中有点讨厌:)在自己的插件中,处理它更容易(返回add _ * _ page()函数),但是在本机WP屏幕中,它可以是不同的东西。

–稀有
2011年7月8日在15:36

不幸的是,当我将钩子从wp_footer更改为wp_enqueue_scripts或admin_print_scripts时,CSS消失了,并且在源代码中没有显示。这是我使用的代码:add_action('wp_enqueue_scripts','addCSS');那不起作用,这起作用了add_action('wp_enqueue_scripts','addCSS');除了它显然将CSS添加到页脚。我究竟做错了什么?

–利爪
2012年5月7日15:09