it-swarm.com.de

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

Wie kann ich alle in die Warteschlange eingereihten Stile oder Skripte abrufen und sie dann alle auf einmal abmelden?

7
trusktr

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);
22

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.

5

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 );
0
Lenin Zapata

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);
0
Alex Standiford