在WordPress中注销脚本似乎是不可能的

时间:2019-11-25 作者:Siyah

我什么都试过了。我甚至删除了函数中的所有内容。php创建了一个全新的文件:

function wpdocs_dequeue_script() {
 if (is_singular()) {
    wp_dequeue_script( \'gdrts-rating\' );
  }
}
add_action( \'wp_print_scripts\', \'wpdocs_dequeue_script\', 100 );
想法是从我的自定义帖子类型中删除一些Javascript文件。我认为我做错了什么,所以我第一次尝试了is\\u page(),甚至是is\\u home(),但即使这样对我也不起作用。似乎代码没有被触发。

This is my plugin:

  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 );
不工作!

2 个回复
SO网友:admcfajn

尝试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 );

SO网友:Sam

请注意,以下内容是通过自定义插件完成的,而不是在函数文件中,因为大多数主题在更新时都会覆盖函数文件。

下面的内容经过测试,可以对脚本进行解列。我添加了一些代码,您可以使用这些代码来测试文件在删除之前是否已加载,如果您只希望在is\\U 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 );