WooCommerce结账页面将葡萄牙州/郡字段设为必填项的代码求助
WooCommerce葡萄牙地区结账州/郡字段设为必填的代码方案
以下是可直接添加到子主题functions.php文件的代码,专门针对葡萄牙地区将账单/配送的州/郡字段设为必填,并显示红色星号:
代码实现
// 修改结账字段设置:将葡萄牙地区的州/郡设为必填 add_filter( 'woocommerce_checkout_fields', 'pt_state_required_checkout_fields' ); function pt_state_required_checkout_fields( $fields ) { // 处理账单州字段 $fields['billing']['billing_state']['required'] = true; $fields['billing']['billing_state']['label'] = sprintf( '%s <abbr class="required" title="%s">*</abbr>', __('State/County', 'woocommerce'), __('required', 'woocommerce') ); // 处理配送州字段 $fields['shipping']['shipping_state']['required'] = true; $fields['shipping']['shipping_state']['label'] = sprintf( '%s <abbr class="required" title="%s">*</abbr>', __('State/County', 'woocommerce'), __('required', 'woocommerce') ); return $fields; } // 后端验证:确保葡萄牙地区的州/郡字段已填写 add_action( 'woocommerce_checkout_process', 'pt_state_required_validation' ); function pt_state_required_validation() { $billing_country = isset( $_POST['billing_country'] ) ? sanitize_text_field( $_POST['billing_country'] ) : ''; $shipping_country = isset( $_POST['shipping_country'] ) ? sanitize_text_field( $_POST['shipping_country'] ) : ''; // 验证账单地址 if ( $billing_country === 'PT' && empty( $_POST['billing_state'] ) ) { wc_add_notice( __( '请填写账单州/郡信息。', 'woocommerce' ), 'error' ); } // 验证配送地址 if ( $shipping_country === 'PT' && empty( $_POST['shipping_state'] ) ) { wc_add_notice( __( '请填写配送州/郡信息。', 'woocommerce' ), 'error' ); } }
使用步骤
- 登录WordPress后台,进入外观 > 主题文件编辑器
- 在右侧文件列表中找到并点击子主题的
functions.php文件 - 将上述代码复制粘贴到文件末尾(不要覆盖原有代码,若文件末尾无
?>直接添加即可) - 点击更新文件保存修改
这段代码会完成两项核心操作:
- 强制将账单、配送的州/郡字段设为必填,并添加WooCommerce默认的红色必填星号
- 增加后端验证逻辑,当用户选择葡萄牙作为收货/账单国家时,若州/郡字段为空会弹出错误提示,阻止订单提交
内容的提问来源于stack exchange,提问作者Edward Allen
相关产品推荐
相关产品推荐

