Löschen Sie Scripts auf unnötigen Seiten mit remove_action

An alle Möchtegern-Wähler: Diese Frage ist kein Duplikat, weil ich alle Skripte entfernen muss, die vom Plugin mit remove_action hinzugefügt wurden.

In sehr hartnäckig wp_register_script / add_action vs entfernen Sie die verwendete wp_dequeue_script function, um Skripte wp_dequeue_script zu entfernen, aber ich muss sie alle entfernen (die von Plugin mit add_action hinzugefügt wurde) mit remove_action !

wp_dequeue_script function wp_dequeue_script kann den benutzerdefinierten Code nicht entfernen:

 add_action('wp_head', 'print_style'); function print_style() { echo 'body { margin: 0; }'; } 

Ich habe WP Polls Plugin installiert. Ich benutze es in einigen Seiten und muss seine Styles und Skripte auf anderen Seiten abmelden.

Ich habe im Plugin Code gefunden, der Skripte registriert:

function: Enqueue fragt JavaScripts / CSS ab

 add_action('wp_enqueue_scripts', 'poll_scripts'); function poll_scripts() { // code } 

Also benutze ich den folgenden Code in meiner functions.php um die Skripte zu entfernen:

 add_action( 'wp_enqueue_scripts', 'deregister_polls_scripts_and_styles' ); function deregister_polls_scripts_and_styles() { if ( is_home() ) { remove_action( 'wp_enqueue_scripts', 'poll_scripts'); } } 

Also muss es die Abfrageskripte auf der Homepage abmelden, aber die ID nicht. Was mache ich falsch?

PS 1

Skripte entfernen in diesem Fall:

 add_action( 'after_setup_theme', 'wc_deregister_polls_scripts_and_styles' ); function wc_deregister_polls_scripts_and_styles() { remove_action('wp_enqueue_scripts', 'poll_scripts'); remove_action('wp_head', 'poll_head_scripts'); } 

Aber ich muss es auf einigen Seiten wie folgt entfernen:

 add_action( 'after_setup_theme', 'wc_deregister_polls_scripts_and_styles' ); function wc_deregister_polls_scripts_and_styles() { if ( is_page('developers') ) { remove_action('wp_enqueue_scripts', 'poll_scripts'); remove_action('wp_head', 'poll_head_scripts'); } } 

Also in diesem Fall funktioniert es nicht.

Ich habe ein anderes Plugin installiert und alles funktioniert in diesem Fall gut. Gleiche Aktionen, ABER alles funktioniert:

 add_action( 'wp_enqueue_scripts', 'wc_deregister_scripts_and_styles' ); function wc_deregister_scripts_and_styles() { if ( !is_home() && !is_tax('brand') ) { remove_action( 'wp_enqueue_scripts', 'uag_frontend_styles', 999 ); remove_action( 'wp_footer', 'uag_footer_scripts'); } } 

PS 2

Dies ist ein weiteres Plugin.

 add_action('wp_enqueue_scripts', 'uag_frontend_styles', 999); function uag_frontend_styles() { /* main stylesheet */ wp_register_style( 'uag_style', uag_url . 'css/uag.css'); wp_enqueue_style('uag_style'); } 

Das sind Umfragen:

 add_action('wp_enqueue_scripts', 'poll_scripts'); function poll_scripts() { global $text_direction; if(@file_exists(get_stylesheet_directory().'/polls-css.css')) { wp_enqueue_style('wp-polls', get_stylesheet_directory_uri().'/polls-css.css', false, '2.63', 'all'); } else { wp_enqueue_style('wp-polls', plugins_url('wp-polls/polls-css.css'), false, '2.63', 'all'); } if('rtl' == $text_direction) { if(@file_exists(get_stylesheet_directory().'/polls-css-rtl.css')) { wp_enqueue_style('wp-polls-rtl', get_stylesheet_directory_uri().'/polls-css-rtl.css', false, '2.63', 'all'); } else { wp_enqueue_style('wp-polls-rtl', plugins_url('wp-polls/polls-css-rtl.css'), false, '2.63', 'all'); } } $poll_ajax_style = get_option('poll_ajax_style'); $pollbar = get_option('poll_bar'); wp_enqueue_script('wp-polls', plugins_url('wp-polls/polls-js.js'), array('jquery'), '2.63', true); // Other same code } 

Solutions Collecting From Web of "Löschen Sie Scripts auf unnötigen Seiten mit remove_action"

Eine Aktion kann in der Zeit entfernt werden, die vergeht, seit sie hinzugefügt wurde. Also nachdem hinzugefügt wurde, wird vorher gefeuert.

Sie sagen, dass das Plugin diesen Code hat:

 add_action('wp_enqueue_scripts', 'poll_scripts'); function poll_scripts() { // code } 

Aber du sagst nicht, ob dieser Code irgendwo in einer function hängt.

Wenn es in keiner function ist, wird die Aktion hinzugefügt, sobald die Plugins geladen sind, also Sie (also vor dem Thema geladen), also wenn Sie es von einem Thema aus tun, können Sie diese Aktion überall vor wp_head() , ersten Haken entfernen Sie haben zur Verfügung nach Thema ist after_setup_theme ,

So wird dieser arbeiten:

 add_action('template_redirect', 'remove_poll_scripts'); function remove_poll_scripts() { if ( is_home() ) remove_action('wp_enqueue_scripts', 'poll_scripts'); } 

wenn du in deiner functions.php schreibst

 remove_action('wp_enqueue_scripts', 'poll_scripts'); 

Es funktioniert, weil functions.php nach dem Plugin geladen wird und bevor 'wp_enqueue_scripts' ausgetriggers wird: so sind Sie perfekt in der Zeit, aber Sie können nicht überprüfen, auf welcher Seite Sie die Skripte entfernen.

Außerdem, wenn Sie versuchen, genau dasselbe von einem Plugin zu machen, und in Ihrer Plugin-Datei schreiben Sie

 remove_action('wp_enqueue_scripts', 'poll_scripts'); 

ohne es in irgendeinen Haken zu wickeln, kann es scheitern: niemand kann sicherstellen, dass Ihr Plugin nicht vor dem Plugin geladen wird, das das Skript hinzufügt, und in diesem Fall versuchen Sie, die Aktion zu entfernen, bevor sie hinzugefügt wird.

Nur ein Gedanke hier – versuchen Sie, die Priorität Ihrer Aktion zurück zu bewegen. Ohne die Priorität wird es wie bei der ursprünglichen Registrierung auf 10 zurückgesetzt. Wegen der Art und Weise, wie untergeordnete Themen funktionieren, heißt das, dass Sie die Deregistrierung auslösen, bevor die Registrierung / Enqueue stattfindet.

 add_action( 'wp_enqueue_scripts', 'deregister_polls_scripts_and_styles', 99 );