web-dev-qa-db-ja.com

Wordpressでスクリプトを登録解除することは不可能のようです

私はすべてを試しました。 functions.phpのすべてのコンテンツを削除して、これだけでまったく新しいファイルを作成しました。

function wpdocs_dequeue_script() {
 if (is_singular()) {
    wp_dequeue_script( 'gdrts-rating' );
  }
}
add_action( 'wp_print_scripts', 'wpdocs_dequeue_script', 100 );

アイデアは、カスタム投稿タイプからいくつかのJavaScriptファイルを削除することです。私は何か悪いことをしていると思ったので、最初にis_page()とis_home()を試しましたが、それでもうまくいきませんでした。コードが実行されていないようです。

これは私のプラグインです:

  wp_enqueue_script('gdrts-events', $this->file('js', 'events'), array(), gdrts_settings()->file_version(), false);
    wp_enqueue_script('gdrts-rating', $this->file('js', 'rating'), $depend_js, gdrts_settings()->file_version(), true);

だから、私もこのようにしようとしました:

function wpdocs_dequeue_script() {
    wp_dequeue_script( 'gdrts-rating' );

}
add_action( 'wp_enqueue_scripts', 'wpdocs_dequeue_script', 100 );

動かない!

1
Siyah

deregister_scriptに加えてdequeue_scriptをお試しください

function wpdocs_dequeue_script() {
    wp_dequeue_script( 'gdrts-rating' );
    wp_deregister_script( 'gdrts-rating' );

}
add_action( 'wp_enqueue_scripts', 'wpdocs_dequeue_script', 100 );
1
admcfajn

ほとんどのテーマが更新されると関数ファイルが上書きされるため、以下はカスタムプラグインを介して行われ、関数ファイルでは行われないことに注意してください。

以下はテストされ、スクリプトのキューを解除するように機能します。ファイルを削除する前にファイルがロードされているかどうかをテストするために使用できるコードを追加しました。また、これをそのポストでアンロードしたいだけの場合は、カスタムのポスト名を使用しますis_singular()に入力します。

<?php
/*
Plugin Name: Remove_script_Stack_353322
Plugin URI: www.mywebsite.com
Description: Remove a script when needed
Version: 1.0
Author: Me
Author URI: www.mywebsite.com
*/

    /**
     * Enqueue script.
     */
    function my_scripts_method() {
        //Change your plugin url/name
        wp_enqueue_script( 'gdrts-rating', plugins_url( 'test.js' , __FILE__ ));
    }
    add_action( 'wp_enqueue_scripts', 'my_scripts_method' );



    function wpdocs_dequeue_script() 
    {

        // Lets check if gdrts-rating is loaded
        $handle = 'gdrts-rating';
        $list = 'enqueued';
        if (wp_script_is( $handle, $list )) 
        {

            //echo 'Loaded --------------------------------------------------------------------->';
            // Custom post type so use the name in ->  is_singular('custom_post_name')  you can have more post types such as is_singular('custom_post_name', 'custom_post_2')

            if (is_singular()) 
            {
             // Unload the plugin
             wp_dequeue_script( 'gdrts-rating' );
            }

        } 
        else 
        {
           // Not loaded do nothing
           //echo 'Not loaded --------------------------------------------------------------------->';
        }


    }
    add_action( 'wp_print_scripts', 'wpdocs_dequeue_script', 10 );
1
Sam