Como obtenho o identificador $ para todos os scripts enfileirados?


18

Existe alguma maneira de obter o identificador $ para cada script que foi enfileirado?

Existe alguma matriz que contém todas as alças para que eu possa fazer um loop e fazer algo usando cada alça $?

Respostas:


25

o $wp_scriptsglobal mantém todos os dados do script:

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
A partir do WP 4.2.0 - $wp_scripts = wp_scripts();pode ser melhor do que acessar o global diretamente, pois ele será inicializado $wp_scriptsse não tiver sido definido.
jgraup

Você deve adicionar prioridade ,9999como add_action( 'wp_print_scripts', wpa54064_inspect_scripts', 9999 );, caso contrário, você verá scripts que são desenfileirados pelo arquivo functions.php
Ryszard Jędraszyk

2

Existe alguma maneira de obter o identificador $ para cada script que foi enfileirado?

Você pode tentar inspecionar $wp_scripts->queueem um gancho específico, mas ele não fornecerá uma lista de todos os identificadores usados ​​pelo WordPress, acredite ou não.

Por exemplo, você pode conectar-se wp_head, que executa a wp_print_scriptsação, para obter uma lista do $handlestema das ações Twenty Seventeen no WP v4.7.5:

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

add_action( 'wp_head', 'get_enqueued_scripts' );

E a lista de $handlesfrom $wp_scripts->groupsserá exibida:

insira a descrição da imagem aqui

Nesse ponto, se você comparar o que existe, $wp_scripts->queueverá apenas um subconjunto do acima.

Portanto, a even wp_print_scripts não fornecerá uma lista completa de identificadores, como mostrado acima, se é isso que você procura. E também não é possível sempre depender de dependências agrupadas para obtê-las.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.