0

我收到此错误“未捕获的错误:Select2 附加到元素时不允许选项'ajax'。” 在更新产品变体时。

实际上有 2 个 select2.js 文件,一个来自 Woocommerce,另一个来自“WR PageBuilder”插件。当我重命名“WR PageBuilder”select2.js 文件时,它工作正常。但编辑器需要该文件。

我只想从产品页面中删除该 js 文件。

我做了 'wp_deregister_script()' 和 'wp_dequeue_script()' 但什么也没发生。

这是我的代码:

add_action('admin_init', 'functon_to_filter_script');
function functon_to_filter_script() {
global $typenow;
// when editing pages, $typenow isn't set until later!
if (empty($typenow)) {
    // try to pick it up from the query string
    if (!empty($_GET['post'])) {
        $post = get_post($_GET['post']);
        $typenow = $post->post_type;
    }
}
if( 'product' == $typenow ){
    add_action( 'admin_enqueue_scripts', 'deregister_my_script', 100 );

}
}
function deregister_my_script() {
  wp_dequeue_script('wr-pagebuilder');
  wp_deregister_script('wr-pagebuilder');
}

谁能给我一个解决方案?

4

1 回答 1

0

这不起作用,因为您使用错误的操作。在这里查看动作钩子的正确用法: Wordpress中的钩子

您将 admin_enqueue_scripts 操作挂钩放在 admin_init 操作挂钩内。尝试将 admin_enqueue_scripts 放在 admin_init 钩子之外,如下所示:

global $typenow;

add_action( 'admin_enqueue_scripts', 'deregister_my_script', 100 );


function deregister_my_script() {
    if (!empty($_GET['post'])) {
        $post = get_post($_GET['post']);
        $typenow = $post->post_type;
    }

    if( 'product' == $typenow ){
        wp_dequeue_script('wr-pagebuilder');
        wp_deregister_script('wr-pagebuilder');
    }

}
于 2017-08-05T10:26:02.673 回答