排队或注册脚本的最佳实践是使用wp_register_script
和wp_enqueue_script
. 不应使用不使用此功能添加脚本的插件和主题。
原因很简单:有wp_register_script()
我们能够检索有关已注册脚本的大量信息。尤其是如果给定的源已注册或未注册。
我写了一个simple class 测试源是否已注册。该类可以取消注册脚本并注册新脚本或跳过新脚本。这门课应该是你自己发展的起点。是的not 用于生产环境!
How do the class work?
该类使用应注册的脚本检索数组。然后比较文件名(和
only 每个已注册脚本的文件名),以及应注册脚本的文件名。如果脚本/文件名尚未注册,则其句柄将添加到数组中,并将在稍后注册。
可以对该类进行扩展,以比较脚本的完整路径、版本或决定是否应注册脚本所需的任何内容。
A simple example
$my_scripts = array(
\'foo\' => array(
\'src\' => \'external/ressource/foo.js\',
\'deps\' => array( \'jquery\' ),
\'version\' => false,
\'in_footer\' => true
),
\'bar\' => array(
\'src\' => home_url( \'/wp-admin/js/common.min.js\' ),
\'deps\' => false,
\'version\' => false,
\'in_footer\' => true
),
\'jquery\' => array(
\'src\' => \'//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js\',
\'deps\' => false,
\'version\' => \'1.8.3\',
\'in_footer\' => true
),
);
$safe_register = new Safe_Registering_Scripts( $my_scripts, true );
global $wp_scripts;
var_dump( $wp_scripts->registered[\'jquery\'] );
首先,我们定义一个数组,其中包含要注册的所有脚本。该类将遍历我们的脚本,并比较源代码是否已注册。
在foo
脚本将始终注册,因为源未注册
bar
脚本将永远不会注册,因为它的源已经注册jquery
脚本是一个特例。已存在名为jquery
但是类调用中的第二个参数表示必须用新的源代码替换此脚本源代码正如您在
var_dump()
, 的来源
jquery
脚本已被类替换。因此,如果您扩展该类并调整测试(源、js文件名、版本、排队脚本等),就可以帮助最小化js冲突。