如何获得所有排队脚本的$ handle?


18

有没有办法为已排队的每个脚本获取$ handle?

是否有一些包含所有句柄的数组,以便我可以遍历它并使用每个$ handle做一些事情?

Answers:


25

$wp_scripts全球拥有所有的脚本数据:

function wpa54064_inspect_scripts() {
    global $wp_scripts;
    foreach( $wp_scripts->queue as $handle ) :
        echo $handle;
    endforeach;
}
add_action( 'wp_print_scripts', 'wpa54064_inspect_scripts' );

5
从WP 4.2.0开始- $wp_scripts = wp_scripts();可能比直接访问全局更好,因为$wp_scripts如果尚未设置,它将初始化。
jgraup

您应该添加优先级,,9999例如add_action( 'wp_print_scripts', wpa54064_inspect_scripts', 9999 );,否则您将看到由functions.php文件出队的脚本
RyszardJędraszyk19年

2

有没有办法为已排队的每个脚本获取$ handle?

您可以尝试$wp_scripts->queue在特定的钩子处进行检查,但无论您是否相信,它都不会为您提供WordPress使用的所有句柄的列表。

例如,您可以转到wp_head运行该wp_print_scripts操作的,以获取$handlesWP v4.7.5中的“二十十七岁”股票主题的列表:

function get_enqueued_scripts () {
    $scripts = wp_scripts();
    var_dump( array_keys( $scripts->groups ) );
}

add_action( 'wp_head', 'get_enqueued_scripts' );

并且$handlesfrom 的列表$wp_scripts->groups将输出:

在此处输入图片说明

此时,如果要比较存在的内容,$wp_scripts->queue则只会看到上述内容的一部分。

因此,即使您要的是,Even wp_print_scripts 也不会提供上述处理的完整列表。而且不可能总是依靠分组的依赖关系来获取它们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.