根据客户位置

时间:2017-02-08 06:48:25

标签: php wordpress woocommerce checkout user-data

我不知道是否可能,但是,我们需要为巴塞罗那添加一些不同的付款方式。

所以,我们的想法是,如果顾客住在巴塞罗那地区(加泰罗尼亚),他会看到信用卡付款方式和银行转帐帐户不同于西班牙其他地区。

WooCommerce可以吗?

感谢。

1 个答案:

答案 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文件中,或者放在任何插件文件中。