在主题的functions.php中,我调用add_action以获得对加载jquery位置的控制(在页脚以及主题的其他脚本中)。
我遇到的问题是,当我使用add_action('wp_enqueue_scripts')时,只有在未加载任何插件的情况下,它才会启动。但是,add_action('init')方法在所有情况下均适用。
我不记得为什么,但是我相信在这种情况下首选add_action('wp_enqueue_scripts')。如果是这样,我如何在所有情况下都能正常工作?
在functions.php中
//if(!is_admin()){add_action('init', 'my_theme_init');} //THIS WORKS ALL THE TIME
//add_action('wp_enqueue_scripts', 'my_theme_init'); //THIS ONLY WORKS WHEN NO PLUGINS PRESENT
if(!is_admin())
{
require_once(TEMPLATEPATH . '/functions_public.php');
}
在functions_public.php中
function my_theme_init()
{
/* PREVENT DUPLICATE COPIES OF JQUERY FROM PLUGINS
**************************************************/
wp_deregister_script('jquery');
/* LOAD THE LOCAL WORDPRESS COPY OF JQUERY AND THEME CUSTOM SCRIPTS IN THE FOOTER
***********************************************/
wp_register_script('jquery', get_bloginfo('template_directory').'/scripts.mythemescripts.js',false,false,true);
wp_enqueue_script('jquery');
}
使用add_action('wp_enqueue_scripts')的第二种方法显然不会在存在插件的情况下执行,该插件向主题写出脚本依赖性。