在我的插件中,我想测试以查看jQuery或Prototype(或两者)是否将由另一个插件加载。所以,有 wp_enqueue_script('jquery') 或者 wp_enqueue_script('prototype') 已经被称为。

我有适合文件中的插件的代码 plugin.prototype.jsplugin.jquery.js 如果排队的原型,我的插件将使用 plugin.prototype.js. 。这样,我避免将超过必要的加载到网站上。如果没有加载,我将排队排队。

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

有帮助吗?

解决方案

利用 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');

其他提示

要确保在加载jQuery或原型后运行代码,请使用 $deps 参数为 wp_enqueue_script, ,通过 array('jquery') 或者 array('prototype'). 。如果您想知道脚本是否在队列中,则可以使用 query() 的方法 WP_Dependencies (这是 WP_Scripts)。因此,这样的事情应该起作用:

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

当然,插件可以在您决定之后加入它们,因此请尝试确保在最后可能的时刻执行此检查。

许可以下: CC-BY-SA归因
scroll top