帝云网络官网(电话:15096123457)
帝云网络

Wordpress yith主题修复 WooCommerce 结算页国家切换后省份无法联动的问题

2026-01-25 18:50:28 0

问题说明

  • 账单地址(Billing)选择国家后省份联动正常,收货地址(Shipping)选择国家后省份不联动或出现必填错误。

  • 仅在 yith-proteo/dy-proteo 主题下发生,切换其它主题正常。

根因定位

  • yith-proteo 父主题在前端对站点所有可见 select 统一执行 SelectWoo/Select2 增强(带搜索),并在 updated_checkout 等事件下重复初始化。

  • WooCommerce Blocks 的结算页由 React 控制表单;当 Shipping 国家下拉被强制增强时,Blocks 对省份控件类型(下拉/输入框)与必填判定被打断,导致联动与校验失效。

父主题相关入口(供参考):

  • 增强注册与初始化:wp-content/themes/yith-proteo/inc/scripts.phpwp-content/themes/yith-proteo/js/theme.js

解决方案(最简且稳定)

  • 在子主题 dy-proteo 中,仅对结算页移除父主题的前端增强脚本 yith-proteo-themejs,让 Woo 官方联动逻辑接管。

  • 不修改 WordPress 核心或任何插件,不改父主题文件。

子主题代码位置:

  • 文件:wp-content/themes/dy-proteo/functions.php

示例代码(已实现):

// 结算页禁用父主题 select2 增强 — 开始
add_action( 'wp_print_scripts', function(){
    if ( function_exists('is_checkout') && is_checkout() ) {
        wp_dequeue_script( 'yith-proteo-themejs' );
    }
}, 100 );
// 结算页禁用父主题 select2 增强 — 结束

验证步骤

  • 在结算页切换 Shipping 国家(United States / Germany / China),省份/州出现对应下拉选项。

  • 切换到无州省的国家(Singapore / Ethiopia 等),省份显示输入框且不再报错。

  • Billing 与 Shipping 的联动与校验一致,页面加载正常。

注意事项

  • 该修复仅作用于结算页,避免影响站点其它页面的 select 样式。

  • 若浏览器扩展注入自动填充浮层(出现 insertBefore 报错),与站点逻辑无关;可用隐私模式或禁用扩展验证。

结论

  • 根本原因是父主题对收货地址国家下拉的强制增强。

  • 仅保留“结算页禁用 yith-proteo-themejs”的处理,即可恢复 WooCommerce 官方联动;不需要任何额外脚本或复杂兼容。

相关产品
    没有关联
在线咨询