it-swarm.cn

测试jQuery或Prototype是否被另一个插件排队?

在我的插件中,我想测试一下jQuery或Prototype(或两者)是否会被另一个插件加载。因此,已经调用了 wp_enqueue_script('jquery')wp_enqueue_script('prototype')

我的代码适合我的插件plugin.prototype.jsplugin.jquery.js,如果Prototype排队,我的插件将使用plugin.prototype.js。这样我就可以避免在网站上加载超过必要的内容。如果两者都没有加载,我将排队等级较小的。

我如何测试以查看已排队的内容?如何确保我的代码最后运行?

5
artlung

使用wp_script_is()检查脚本是否在队列中。

function add_my_scripts() {
    $doing_jquery = wp_script_is('jquery', 'queue');
    $doing_prototype = wp_script_is('prototype', 'queue');

    var_dump($doing_jquery, $doing_prototype);
}
add_action('wp_print_scripts', 'add_my_scripts');
11
Annika Backstrom

要确保在加载jQuery或Prototype之后运行代码,请使用$deps参数wp_enqueue_script,并传递array('jquery')array('prototype')。如果你想知道一个脚本是否在队列中,你可以使用 WP_Dependenciesquery()方法( 这是WP_Scripts的超类 )。所以像这样的东西应该工作:

global $wp_scripts;
$jQueryIsLoaded = (bool) $wp_scripts->query('jquery');
$prototypeIsLoaded = (bool) $wp_scripts->query('prototype');

当然,插件可以在您决定插入之后将它们排队,因此请尽量确保在最后一刻执行此检查。

2
Jan Fabry