开发Wordpress主题的最佳实践是always use WP中包含的jquery。因此,应避免取消注册并使用cdn托管版本。
这是一种必要的做法,例如,在wordpress存储库中包含主题,而且一些著名的主题市场(如themeforest)目前不接受使用cdn托管版本jQuery的主题。
之后,您的代码:
wp_enqueue_script(\'jquery-cycle\', TEMPLATE_PATH . \'/js/jquery.cycle.all.js\', array(\'jquery\'), null );
有点不对,因为
TEMPLATE_PATH
返回主题的路径,但是
wp_enqueue_script
需要url。另一个问题是
wp_enqueue_script
应使用调用
wp_enqueue_scripts
行动挂钩(
admin_enqueue_scripts
用于支持)。看见
here因此,您应该将以前的代码替换为:
add_action(\'wp_enqueue_script\', \'enqueue_my_scripts\');
function enqueue_my_scripts() {
wp_enqueue_script(\'jquery-cycle\', get_template_directory_uri() . \'/js/jquery.cycle.all.js\', array(\'jquery\'), null );
}
注意我是如何使用
add_action
要挂接的函数
wp_enqueue_script
动作以及我在函数中使用的方式
get_template_directory_uri
函数检索主题根文件夹的url。
看见here 的文档add_action
, here 的文档wp_enqueue_script
挂钩和here 的文档get_template_directory_uri
.
来自codex,在wp_enqueue_script
文档页面(link) 你可以阅读
WordPress附带的jQuery库被设置为noConflict()模式(请参阅wp includes/js/jQuery/jQuery.js)。这是为了防止与WordPress可以链接的其他JavaScript库的兼容性问题。
因此,在wordpress中使用jquery的每个脚本都必须包装在noConflict wrappers. 例如,如果您想使用此代码(示例取自jquery cycle docs):
$(\'#shuffle\').cycle({
fx: \'shuffle\',
easing: \'easeOutBack\',
delay: -4000
})
您需要使用noConflict包装器对其进行包装,因此它应该是:
jQuery(document).ready(function($) {
$(\'#shuffle\').cycle({
fx: \'shuffle\',
easing: \'easeOutBack\',
delay: -4000
})
});
可能在您使用的代码中
$
直接使用jQuery快捷方式,因此它不起作用。