Wordpress基本上有两组方法来处理脚本,这两种方法都应该使用:
wp_register_script 在Wordpress中注册脚本。它不会被调用,只要Wordpress需要,它就可以使用wp_deregister_script 正好相反。它删除了wp\\U register\\u脚本中的定义,该脚本不再作为依赖项或用于排队
注册的脚本不会输出任何代码。它们只是以编程方式定义脚本,以便WP可以对依赖项和排队作出反应。
wp_enqueue_script 实际上定义了一个脚本并将其排队,以便在HTML页面的页眉/页脚中输出wp_dequeue_script执行完全相反的操作,并将用于输出的脚本出列
实际打印发生在动作“wp\\u head”或“wp\\u footer”上,具体取决于寄存器的详细信息。
例如:
wp_deregister_script(\'jquery\');
wp_register_script(\'jquery\', ("https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"), false, \'1.9.1\', true);
wp_enqueue_script( \'script-1\', get_template_directory_uri() . \'/js/example1.js\', array(\'jquery\'), \'1.0.0\', false );
wp_enqueue_script( \'script-2\', get_template_directory_uri() . \'/js/example2.js\', array(\'jquery\'), \'1.0.0\', true );
wp_enqueue_script( \'script-3\', get_template_directory_uri() . \'/js/example3.js\', array(\'jquery\'), \'1.0.0\', true );
wp_enqueue_script( \'script-4\', get_template_directory_uri() . \'/js/example4.js\', array(\'jquery\'), \'1.0.0\', true );
wp_enqueue_script( \'script-5\', get_template_directory_uri() . \'/js/example5.js\', array(\'jquery\'), \'1.0.0\', true );
在本例中,我注销了jQuery。它不再可用,如果我不再注册它,我将得到与您相同的错误。(这次来自Google CDN,希望它能加速我的页面。)
但在第三行,jQuery将不会被打印出来。它不会出现在任何地方。但从第四行开始,我调用了一组脚本,它们都以jquery作为依赖项。第一个位于页眉,其他所有位于页脚。由于依赖关系,jQuery会自动在标头中排队,因为首先需要它。
因此,Wordpress的脚本系统非常可靠,无需处理干扰或之前的请求。注册的脚本只在需要时调用一次,并且仅在需要时调用。
在您的示例中,取消注册函数第1行中的脚本,并在第2行再次调用它。但由于注销,Wordpress忘记了URL、版本、依赖项等所有细节。逻辑中正确的功能应该是wp_dequeue_script, 但即使这样也不需要。Wordpress通过查看排队脚本或依赖项来评估需求。
编辑:
wordpress如何知道如何阻止8个不同插件都试图添加不同版本的jquery所留下的混乱?
在wp_print_scripts 行动是印刷出来的。这就是行动/筛选中的优先级系统的基本用途。