【问题标题】:wp_enqueue_script in action hook wp_print_scriptswp_enqueue_script 在操作钩子 wp_print_scripts
【发布时间】:2011-10-09 23:59:40
【问题描述】:

在函数wp_enqueue_script的WordPress文档页面中,写得很清楚:

注意:如果从 wp_head 操作调用此函数将不起作用,因为标签是在 wp_head 运行之前输出的。相反,从 init 操作函数(将其加载到所有页面)、template_redirect(仅将其加载到公共页面)或 admin_print_scripts(仅用于管理页面)调用 wp_enqueue_script。 不要使用 wp_print_scripts(请参阅此处了解说明)

不要使用 wp_print_scripts 操作 是我想要强调的,但是在“如何在 WordPress 中包含 Javscript”进行简单的谷歌搜索。您会发现大多数示例都使用 wp_print_scripts 动作来调用 wp_enqueue_script。似乎每个人都可以接受。

所以我在这里遗漏或误解了什么?


编辑

法典已被修改。它现在说:

如果从 wp_head 或 wp_print_scripts 操作调用此函数将不起作用,因为在运行这些操作之前需要将文件排入队列。有关要使用的正确挂钩,请参阅用法部分。

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    是的,我去过那里很多次。简短的回答是所有打印脚本请求的人都是错误的,或者有些人建议不使用 wp_enqueue_script 而是使用 Modernizr.load (yesnope.js) 或任何其他 js 加载程序库动态加载所有内容会更快。

    我的建议是坚持使用 wp_enqueue_script 作为最佳实践,但如果您正在为移动设备开发主题,或者您非常担心速度并且不会因请求而使浏览器臃肿,我真的建议您使用单个动态加载所有内容js 文件(您可以使用 wp_enqueue_script 调用)。甚至考虑内联所有内容,而不是加载 jQuery,而是加载 zepto.js 左右。

    许多开发人员都会执行这种加载所有打印内容的糟糕做法,不仅味道不好,而且对于经验丰富的主题开发人员来说也很糟糕,我可能会说:S

    例如主题和其他几个空白主题都依赖于这种做法,这会缩短子主题的开发速度。

    如果您不确定 wp_enqueue_script,请阅读 wordpress 代码。它有详尽的记录。

    问候,

    【讨论】:

    • 感谢您的回答。但是,我的问题实际上是我们应该在哪里调用 wp_enqueue_script ?在 codex 中,写着最好不要使用 wp_print_scripts 钩子动作调用它来调用它。但大多数人都是这样做的。那么他们错了吗?
    • 如果你正在开发一个全新的主题,你可以在你的functions.php文件中调用wp_enqueue_script。创建子主题也是如此。子主题文件夹中的每个文件都比原始主题首先被调用。正如我所说,我真的建议您阅读codex。它有很好的文档记录,您会发现如何调用该函数。为了给您更好的答案,我需要知道您是在修改主题、从头开始创建主题还是创建子主题。
    • 是的。他们大多数时候都是错误的,除非他们正在做移动开发或非常喜欢 html5。我的建议是坚持使用 wp_enqueue_script 或使用 yepnope.js 动态加载所有内容
    • 嗨,是的,我完全同意你的观点,我们应该使用 wp_enqueue_script 在我们的主题或插件中包含 javascript。但是我的问题是在哪里调用它们,例如在插件开发中,大多数人会使用 wp_print_scripts 挂钩来调用 wp_enqueue_script,但根据 Codex 是错误的。那么为什么开发人员还在这样做呢?是的,我一遍又一遍地阅读法典页面。
    • 也许因为这会在任何其他事情之前加载您的代码,这是一个高优先级的功能,但我不是 Wordpress 贡献者来告诉你为什么从技术上讲;)
    猜你喜欢
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 2021-05-17
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多