问题描述
我有这个麻烦了我不知道如何做到正确的方式,我读了这么多不同的技术和方法来做,我不知道该怎么做。
我有一些问题和麻烦: – 我应该注销 WordPress 中包含的 jQuery 吗?我现在正在使用以下代码:
function uw_load_scripts() {
// De-register the built in jQuery
wp_deregister_script('jquery');
// Register the CDN version
wp_register_script('jquery', 'http://googleajax.admincdn.com/ajax/libs/jquery/1.7.1/jquery.min.js', array(), null, false);
// Load it in your theme
wp_enqueue_script( 'jquery' );
}
add_action( 'wp_enqueue_scripts', 'uw_load_scripts' );
这个工作。我应该为所有人这样做,对于所有人,除了管理员 (所以后端使用 WordPress 版本?):
if (function_exists('load_my_scripts')) {
function load_my_scripts() {
if (!is_admin()) {
wp_deregister_script( 'jquery' );
wp_register_script('jquery', 'http://googleajax.admincdn.com/ajax/libs/jquery/1.7.1/jquery.min.js', array(), null, false);
wp_enqueue_script('jquery');
}
}
}
add_action('init', 'load_my_scripts');
这个版本实际上不起作用,我得到了 WordPress jQuery-version 而不是谷歌。
另外,如何添加自己的脚本 (滑块脚本,modernizr 和我自己的 custom.js) 的正确方法?我想我应该通过 functions.php 这样做,而不是像我现在这样做的标题,但我不确定我该怎么做。
最佳解决方案
第一经验法则:不要注销 core-bundled 脚本并替换其他版本,除非您绝对确定由于版本更改,主题,插件或核心本身不会中断。真的,除非你绝对需要一个替代版本的 core-bundled 脚本,只需使用与核心捆绑的内容。
其次,我强烈建议您将 wp_enqueue_scripts
挂接到脚本注册和入队,而不是 init
。 (它在 init
上工作,但从 play-nicely-with – 其他角度来说,最好使用最语法正确的钩子。)
第三,要排列自己的自定义脚本,您使用与上述相同的方法:
<?php
function wpse45437_enqueue_scripts() {
if ( ! is_admin() ) {
$script_path = get_template_directory_uri() . '/js/';
// Enqueue slider script
wp_enqueue_script( 'wpse45437_slider', $script_path . 'slider.js', array( 'jquery' ) );
// Enqueue modernizr script
wp_enqueue_script( 'wpse45437_modernizr', $script_path . 'modernizr.js', array( 'jquery' ) );
}
}
add_action( 'wp_enqueue_scripts', 'wpse45437_enqueue_scripts' );
?>
只需添加您需要排入的任何脚本。
次佳解决方案
希望这有助于查找 wp_enqueue_scripts
的代码,以获取更多信息。
-
不要使用
init
进行排队。将wp_enqueue_scripts
用于 front-end 和admin_enqueue_scripts
用于管理端。您可以使用init
来注册脚本。 -
挂钩
wp_enqueue_scripts
仅在 front-end(而不是 log-in 页面) 上触发 – 因此您不必检查is_admin()
。 -
除非你有特定的理由去做,否则我建议使用
functions.php
为主题或在 plug-in 中注册和排队脚本。你简单地说:function myprefix_load_scripts() { // Load scripts here } add_action( 'wp_enqueue_scripts', 'myprefix_load_scripts' );
-
如果目的是在使用短代码时排入脚本,则您可能希望在短代码回调中使用
wp_enqueue_script
,以便在需要时将其排队 (这将在 3.3 之后将其打印在页脚中) 。 -
你不应该在管理端的 re-register 现有的 jQuery 。你可以打破一些东西:D 。
-
Plug-ins 不应该是现有的 jQuery 的 re-register 。
-
你应该衡量 re-registering jQuery 的优点和缺点。例如,如果您注册旧版本 (可能不是现在,但将来…) 可能会破坏一些 plug-ins 。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。