Wie kann ich alle in die Warteschlange eingereihten Stile oder Skripte abrufen und sie dann alle auf einmal abmelden?
Ich hoffe du weißt was du tust. Sie können die Aktions-Hooks wp_print_styles
und wp_print_scripts
verwenden und dann die globalen Objektvariablen $wp_styles
und $wp_scripts
in ihren jeweiligen Hooks abrufen.
Das Attribut "registered" listet registrierte Skripte auf und das Attribut "queue" listet in die Warteschlange eingereihte Skripte für beide oben genannten Objekte auf.
Ein Beispielcode zum Leeren der Skripte und der Stilwarteschlange.
function pm_remove_all_scripts() {
global $wp_scripts;
$wp_scripts->queue = array();
}
add_action('wp_print_scripts', 'pm_remove_all_scripts', 100);
function pm_remove_all_styles() {
global $wp_styles;
$wp_styles->queue = array();
}
add_action('wp_print_styles', 'pm_remove_all_styles', 100);
Sie können dies auch pro Basis tun, indem Sie die Handler finden, die aufgerufen werden, nach wp_enqueue_style
oder wp_enqueue_script
suchen. Sie können sie auf diese Weise auf Ihrem functions.php
abmelden.
add_action( 'wp_print_styles', 'my_deregister_styles', 100 );
function my_deregister_styles() {
wp_deregister_style( 'some-css' );
}
add_action( 'wp_print_scripts', 'my_deregister_javascript', 100 );
function my_deregister_javascript() {
wp_deregister_script( 'tutorials-js' );
wp_deregister_script( 'gsc_dialog' );
wp_deregister_script( 'gsc_jquery' );
}
Hameedullah-Lösung ist besser, aber wenn Sie auf Probleme stoßen, weil einige Skripte nicht geladen werden, versuchen Sie es mit den oben genannten.
Hallo, Sie können auch alle diese Skripte entfernen, und WordPress wird korrekt funktionieren. Da Sie mit Wordpress das gesamte Skript entfernen können, können diejenigen, die er benötigt, nicht entfernt werden. Das Audio-Skript und andere sind Skript-Extras, sodass dies in Ihrem WordPress keine Probleme verursacht.
/**
* Dequeue the Parent Theme scripts or plugin.
*
* Hooked to the wp_print_scripts action, with a late priority (100),
* so that it is after the script was enqueued.
*/
function my_site_WI_dequeue_script() {
wp_dequeue_script( 'comment-reply' ); //If you're using disqus, etc.
wp_dequeue_script( 'jquery_ui' ); //jQuery UI, no thanks!
wp_dequeue_script( 'fancybox' ); //Nah, I use FooBox
wp_dequeue_script( 'wait_for_images' );
wp_dequeue_script( 'jquery_easing' );
wp_dequeue_script( 'swipe' );
wp_dequeue_script( 'waypoints' );
}
add_action( 'wp_print_scripts', 'my_site_WI_dequeue_script', 99 );
Die Methode von Hameedullah ist nützlich. Wenn Sie jedoch nur möchten, dass dies im Front-End der Site funktioniert (z. B. nicht in Ihrem WordPress-Dashboard), müssen Sie eine Bedingung hinzufügen, um eine vorzeitige Abschaltung zu erzwingen.
Ich benutze einen Check, der in diese Frage erwähnt wird, zusammen mit is_admin()
, um dies zu tun.
function pm_remove_all_scripts(){
if(in_array($GLOBALS['pagenow'], ['wp-login.php', 'wp-register.php']) || is_admin()) return; //Bail early if we're
global $wp_scripts;
$wp_scripts->queue = array();
}
add_action('wp_print_scripts', 'pm_remove_all_scripts', 100);
function pm_remove_all_styles(){
if(in_array($GLOBALS['pagenow'], ['wp-login.php', 'wp-register.php']) || is_admin()) return; //Bail early if we're
global $wp_styles;
$wp_styles->queue = array();
}
add_action('wp_print_styles', 'pm_remove_all_styles', 100);