错误:当附加到 <select> 元素 woocommerce 时,Select2 不允许选项“ajax”

Zai*_*Ali 6 ajax wordpress jquery jquery-select2 woocommerce

任何人都帮我在这个错误上浪费了太多时间,但没有运气

错误:当附加到元素时,Select2 不允许选项“ajax”。

将 woocommerce 更新到 3.0.3 后,此错误显示在我的开发人员控制台中,此错误破坏了某些功能,例如无法添加加售和交叉文本框正在注意。

当我更改我的主题时,它就会消失,我无法更改我的主题。

请帮忙。

Raf*_*eni 2

我在我的 WordPress 网站上遇到了同样的错误,我修复了这个问题。

首先我想描述这个错误来自哪里。从 WC Beta 2 开始,它们已迁移到 Select2 V4。Select2 V4 基本上与 Select2 V3 兼容,但有一些例外,主要是 AJAX 搜索输入的工作方式。WooCommerce 有两个受影响的实例,需要对 HTML 标记进行一些更改才能正常运行。例如

<input type="hidden" id="grant_access_id" name="grant_access_id" data-multiple="true" class="wc-product-search" style="width: 400px;" data-placeholder="<?php esc_attr_e( 'Search for a downloadable product&hellip;', 'woocommerce' ); ?>" data-action="woocommerce_json_search_downloadable_products_and_variations" />
Run Code Online (Sandbox Code Playgroud)

被改变为

<select id="grant_access_id" class="wc-product-search" name="grant_access_id[]" multiple="multiple" style="width: 400px;" data-placeholder="<?php esc_attr_e( 'Search for a downloadable product&hellip;', 'woocommerce' ); ?>" data-action="woocommerce_json_search_downloadable_products_and_variations"></select>
Run Code Online (Sandbox Code Playgroud)

在 WordPress 中,我看到 select2 取得了控制权,并且我尝试在我的functions.php 中禁用 select2 加载。你可以在下面看到我的脚本

add_action( 'admin_enqueue_scripts', 'remove_views_select2' );

function remove_views_select2($hook) {
    if ( ( $hook == 'post.php' || $hook == 'post-new.php' ) ) {
        wp_deregister_script( 'select2' );
        // wp_register_script( 'views-select2-script' , 'http://your-site.com/wp-content/plugins/meta-box/js/select2/select2.min.js', array('jquery'), 3.2);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以这对我来说效果很好。祝你好运 !