wake-up-neo.com

Holen Sie sich eine Liste der Skripte/Stile und zeigen Sie die Datei an, die sie in die Warteschlange gestellt hat

Ich möchte zeigen, welche Skripte und Stile auf einer Seite geladen wurden und welche Plugins/Designs/Dateien sie zur Seite hinzugefügt haben.

Wir können alle Skripte und Stile anzeigen mit:

<?php
  global $wp_scripts, $wp_styles;
  var_dump( $wp_scripts );
  var_dump( $wp_styles );
?>

Oder eleganter mit dieser Antwort: Wie bekomme ich das $ -Handle für alle in die Warteschlange gestellten Skripte?

Ich möchte jetzt in der Lage sein, zu sehen, wo sie sich in der Warteschlange befanden. Wenn ich zum Beispiel eine JS-Datei namens foobar.js hätte und diese von plugins/organge/orange.php in die Warteschlange gestellt wurde, würde ich diesen Speicherort zusammen mit dem Skript ausgeben wollen.

Dies ist für die Entwicklung gedacht, um zu isolieren, was was lädt.

5
raison

So wie Sie denken, ist das nicht möglich. Es wäre vielleicht möglich, wenn Sie Reflections oder debug_backtrace() verwenden, aber es gibt keinen zuverlässigen Weg, dies zu tun. WordPress speichert keinen Stapel oder keine Warteschlange, in der Dateinamen aufgezeichnet werden.

Die only Sache, die ich mir vorstellen könnte, ist, einfach in die Action und in wp_enqueue_scripts() einzusteigen:

wp_enqueue_scripts

und fügen Sie einen Tracking-Mechanismus von angehängten Rückrufen hinzu. Beachten Sie die s und dass dies nicht die Funktion ist, die Sie zum Anhängen von Skripten an den Stapel verwenden.

<?php
/** Plugin Name: (WPSE #152658) Script Loader Callback Inspector */
add_action( 'wp_enqueue_scripts', function()
{
    var_dump( $GLOBALS['wp_filter'][ current_filter() ] );
}, PHP_INT_MAX -1 );

Dies würde Sie mit einer Warteschlange aller angehängten Rückrufe verlassen. Sie können sie dann mit Ihrer IDE zurückverfolgen.

4
kaiser

Ich benutze so etwas

 foreach( $wp_scripts->queue as $handle ) :
         $obj = $wp_scripts->registered [$handle];
         $filename = $obj->src;
1
Creative Choice