在哪里注册/排队脚本和样式的正确位置


Answers:


62

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

  • 应该及时 -早于脚本/样式输出到页面,否则为时已​​晚;

  • 它应该是有条件的 -否则,您将在不需要的地方加载东西,并导致性能和功能问题,为此,您需要将WP环境加载到后期。

过程的三个阶段

  1. 注册 -解释WP有关脚本/样式的详细信息,并使其存储该信息;

  2. 入队 -(通常与一个wp_enqueue_*()呼叫中的寄存器一起集中)-告诉WP根据其设置(依赖项,页眉/页脚加载)向该队列添加脚本/样式。

  3. 打印 -当WP处理队列,尝试加载特定于其自身的内容使用wp_print_*()函数显式地进行加载时,会发生这种情况。

功能和挂钩的前端结构

  • wp_head()

    • wp_head

      • (1) wp_enqueue_scripts()

        wp_enqueue_scripts «这就是您需要的

      • (8) wp_print_styles()

      • (9) wp_print_head_scripts()

  • wp_footer()

    • wp_footer

      • (10) wp_print_footer_scripts()

它的内容要深得多,但是对于要点来说,这很简单并且足够好:

  • wp_enqueue_scripts最适合在前端注册和排队脚本和样式的钩子,它专门用于该钩子

  • init与此无关,它将起作用,但是过去的食典建议只使用它是不正确的

  • wp_print_footer_scripts()调用之前,您可以随时为页脚添加排队脚本(而非样式);

  • wp_print_*钩子不适用于寄存器/队列,当输出已经发生时,它们是代码中的点。它们适用于手动/自定义脚本/样式输出。

管理员呢?

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

  • 对于初学者来说,只需admin_enqueue_scripts对所有$hook_suffix内容使用钩子(它会在全局范围内传递给有条件的东西),它将在大多数情况下都很好用

  • 当您需要复杂的东西时-查看admin-header.php并从那里挖掘合适的钩子。

那登录呢?

有一个名为的特定钩子login_enqueue_scripts


嗯,在另一个问题的另一个答案中,我被推荐admin_print_scripts-{xxx}。我发现那个admin_print_scripts被调用了,但是没有被调用-{xxx}-edit.php例如。正确的是如何在排队的那个答案admin_print_scripts-xxx和你会怎么推荐,而不是-假设我想在一个自定义后类型添加/编辑页面的脚本/样式(metabox)
工作中的JM

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

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

老实说,@ JM在变量中有点讨厌:)在自己的插件中,处理它(返回add_*_page()函数)更容易,但是在本机WP屏幕中,它可能是不同的东西。
罗斯特2011年

不幸的是,当我将钩子从wp_footer更改为wp_enqueue_scripts或admin_print_scripts时,CSS消失了,并且在源代码中没有显示。这是我使用的代码:add_action('wp_enqueue_scripts','addCSS'); 那不起作用,这起作用了add_action('wp_enqueue_scripts','addCSS'); 除了它显然将CSS添加到页脚。我究竟做错了什么?
塔隆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.