我不知道是否可能,但是,我们需要为巴塞罗那添加一些不同的付款方式。
所以,我们的想法是,如果顾客住在巴塞罗那地区(加泰罗尼亚),他会看到信用卡付款方式和银行转帐帐户不同于西班牙其他地区。
WooCommerce可以吗?
感谢。
答案 0 :(得分:4)
如果您想在WooCommerce 中启用此类功能,客户需要首先注册并登录,因为这是唯一可以获得的方式他们在结账过程之前的城镇位置。
此外,您还必须更改WooCommerce中的某些设置,只允许注册用户结帐。
然后,您必须在注册过程中添加一些必填字段作为城镇,邮政编码和国家/地区。
完成后,可以根据此注册客户字段轻松启用/禁用支付网关。
1)自定义注册字段:
How to add custom fields in user registration on the “My Account” page
2)对于基于此客户信息的付款网关/方法,您可以在 woocommerce_available_payment_gateways
过滤器挂钩中使用自定义挂钩功能:
add_filter( 'woocommerce_available_payment_gateways', 'custom_payment_gateways_process' );
function custom_payment_gateways_process( $available_gateways ) {
if ( is_admin() || !is_user_logged_in() )
return $available_gateways;
$current_user_id = get_current_user_id();
$user_meta = get_user_meta( $current_user_id );
// User City, Postcode, State and Country code
$user_city = $user_meta['billing_city'];
$user_postcode = $user_meta['shipping_postcode'];
$user_State = $user_meta['shipping_state'];
$user_country = $user_meta['shipping_country'];
Disable Cash on delivery ('cod') method example for customer out of spain:
if ( isset( $available_gateways['cod'] ) && $user_country != 'ES' ) {
unset( $available_gateways['cod'] );
}
// You can set many conditions based on the user data
return $available_gateways;
}
此代码只是一个示例,您必须在目标付款方式/网关的正确条件内设置...
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。