gpt4 book ai didi

php - 检查 WooCommerce 用户角色和支付网关,如果它们匹配 - 申请费用

转载 作者:行者123 更新时间:2023-12-04 15:26:55 25 4
gpt4 key购买 nike

如果选择了特定的支付网关,我很难为一系列用户角色申请费用。

如果我不检查用户角色,我编写的代码可以正常工作,但一旦我尝试这样做,它就不行了。

我已经删除(注释)了代码中的用户角色 if 语句,我正在寻求帮助以使其正常工作。

我需要检查用户角色是否与我的 array 匹配,如果匹配,则检查支付网关。如果支付网关也匹配,则应用费用。

这是我的代码:

add_action( 'woocommerce_cart_calculate_fees', 'custom_fee', 20, 1 );
function custom_fee ($cart){

if (is_admin() && !defined('DOING_AJAX')) return;

if (!is_user_logged_in()) return;

if (!is_checkout() && !is_wc_endpoint_url()) return;

$customer_role = wp_get_current_user();
$roles_to_check = array( 'vendor', 'external' );
$payment_method = WC()->session->get('chosen_payment_method');

// if (!in_array($roles_to_check, $customer_role->roles)) return;

if ('bacs' == $payment_method){
$payment_fee = $cart->subtotal * 0.05;
$cart->add_fee( 'Payment Fee', $payment_fee, true );
}
}

最佳答案

您可以使用以下代码中添加注释的解释

这段代码必须满足的条件是:

  • 仅针对某些用户角色
  • 检查付款方式
function custom_fee( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;

if ( ! ( is_checkout() && ! is_wc_endpoint_url() ) )
return; // Only checkout page

if ( ! is_user_logged_in())
return;

// Get current WP_User Object
$user = wp_get_current_user();

// User roles
$roles = ( array ) $user->roles;

// Roles to check
$roles_to_check = array( 'vendor', 'external', 'administrator' );

// Compare
$compare = array_diff( $roles, $roles_to_check );

// Result is empty
if ( empty ( $compare ) ) {
// Payment method
$payment_method = WC()->session->get('chosen_payment_method');

// Condition equal to
if ( $payment_method == 'bacs' ) {
// Calculate
$payment_fee = $cart->subtotal * 0.05;

// Add fee
$cart->add_fee( 'Payment Fee', $payment_fee, true );
}
}
}
add_action( 'woocommerce_cart_calculate_fees', 'custom_fee', 10, 1 );

编辑

要完成我的回答,请参阅 answer来自@LoicTheAztec

关于php - 检查 WooCommerce 用户角色和支付网关,如果它们匹配 - 申请费用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62079374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com