Ruft nur eingereihte Stile und Skripts des aktuellen Themas ab

Ich versuche, nur die geladenen Stile und Skripte des aktuellen aktiven Themas zu erhalten. Ich verwende preg_match, um nur die Skriptdateinamen des Themas herauszufiltern. Wenn Übereinstimmungen gefunden werden, dann echo einfach die Handles dieser Dateinamen ab, damit ich sie aus der Warteschlange entfernen kann.

Aber das preg_match funktioniert nicht. Ich versuche, die aktuelle Thema URL ($ currthemeurl) mit dem Dateinamen url ($ filenames) des Skripts teilweise übereinstimmen. Bitte beachten Sie meine kommentierten Kommentare.

function remove_theme_scripts() { global $wp_scripts; $currthemeurl = get_stylesheet_directory_uri(); //Shows http://mydomain/wp-content/themes/mytheme foreach( $wp_scripts->queue as $handle ){ $obj = $wp_scripts->registered [$handle]; $handles = $obj->handle; //something.js $filenames = $obj->src; //SHOWS http://mydomain/wp-content/themes/mytheme/js/something.js if (preg_match($currthemeurl, $filenames)): //MATCH FOUND echo $handles; else: echo "NOTHING Match"; endif; } } 

Solutions Collecting From Web of "Ruft nur eingereihte Stile und Skripts des aktuellen Themas ab"

Das erste Argument von preg_match soll ein Muster sein, keine Zeichenkette. Es vergleicht also wahrscheinlich nicht die Art, wie Sie es erwarten. Verwenden strpos stattdessen strpos :

 function wpse_275760_theme_scripts() { global $wp_scripts; $stylesheet_uri = get_stylesheet_directory_uri(); foreach( $wp_scripts->queue as $handle ) { $obj = $wp_scripts->registered[$handle]; $obj_handle = $obj->handle; $obj_uri = $obj->src; if ( strpos( $obj_uri, $stylesheet_uri ) === 0 ) { echo $obj_handle; } else { echo 'NOTHING Match'; } } } 

strpos() gibt die Startposition des Matches zurück, falls es einen gibt. Ein Vergleich mit === zu 0 stellt sicher, dass die URL des Skripts und die URL des Themas von Anfang an übereinstimmen, was auch der Fall ist, da beide mit http://mydomain/wp-content/themes/mytheme .