Wie kann ich ALLE Stile gleichzeitig abmelden? Und das gleiche mit Javascript?

8

Wie kann ich alle in die Warteschlange gestellten Stile oder Skripte abrufen und sie dann alle gleichzeitig abmelden?

trusktr
quelle

Antworten:

24

Ich hoffe du weißt was du tust. Sie können die Hooks wp_print_stylesund wp_print_scriptsaction verwenden und dann die globalen $wp_stylesund $wp_scriptsObjektvariablen in ihren jeweiligen Hooks abrufen.

Das Attribut "Registriert" listet registrierte Skripte auf und das Attribut "Warteschlange" listet Skripte in der Warteschlange 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);
Hameedullah Khan
quelle
Lol, ich lerne was ich tue ... hehe. Aber danke, genau das brauchte ich. Ich versuche, alle Skripte zu minimieren, sie in einer Datei anzuhängen und nur die neue Datei in die Warteschlange zu stellen. : D
trusktr
Ich weiß, dass es dafür bereits Plugins gibt, aber sie beschädigen meine Website immer auf die eine oder andere Weise. Daher ist es eine Option, dies manuell zu tun. : D
trusktr
Warum also sagen, dass es genau 100 Argumente akzeptieren soll?
Trusktr
1
Diese 100 hat tatsächlich Priorität, so dass die verknüpften Funktionen aufgerufen werden, nachdem alle mit wp_print_styles oder wp_print_scripts verknüpften Funktionen aufgerufen wurden.
Hameedullah Khan
Oh, Gotcha! Um Plugins usw. die Möglichkeit zu geben, alle ihre Skripte zu registrieren.
Trusktr
5

Sie können dies auch pro Person tun, indem Sie die angeforderten Handler finden, suchen wp_enqueue_styleoder wp_enqueue_scriptsie auf Ihre Weise abmeldenfunctions.php

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' );
}

Die Hameedullah-Lösung ist besser. Wenn Sie jedoch auf Probleme stoßen, weil einige Skripte nicht geladen werden, versuchen Sie es mit den oben genannten.

Grafikdesigner
quelle
1

Hallo, Sie können auch alle diese Skripte entfernen, und WordPress wird korrekt funktionieren. Da Sie mit Wordpress das gesamte Skript entfernen können und die von ihm benötigten nicht entfernt werden können. Das Audioskript und andere sind Skriptextras, sodass dies keine Probleme in Ihrem WordPress 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 );
Lenin Zapata
quelle
0

Die Methode von Hameedullah ist nützlich. Wenn Sie jedoch möchten, dass dies nur im Front-End der Site funktioniert (z. B. nicht in Ihrem WordPress-Dashboard), müssen Sie eine Bedingung hinzufügen, um eine vorzeitige Kaution zu erzwingen.

Ich verwende einen Scheck in erwähnter dieser Frage zusammen mit , is_admin()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);
Alex Standiford
quelle