gpt4 book ai didi

php - 为访客和特定用户角色禁用 WooCommerce 支付网关

转载 作者:行者123 更新时间:2023-12-04 09:42:35 26 4
gpt4 key购买 nike

我已为我的站点中的一个用户角色(“客户”)禁用了发票付款方式,但现在我需要向此规则添加另一个用户角色(“业务”),但我不知道如何使其工作.当我添加第二个角色时,代码完全停止工作,最终向所有用户显示网关。

这是我用来禁用网关的代码:

我对 PHP 不是很有经验,所以任何帮助都将不胜感激。
如果您有机会更正我的代码以适应用例,我将不胜感激。

add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_private' );

function payment_gateway_disable_private( $available_gateways ) {

$user = wp_get_current_user();

if ( isset( $available_gateways['igfw_invoice_gateway'] ) && !is_user_logged_in() || isset( $available_gateways['igfw_invoice_gateway'] ) && in_array('customer', $user->roles) ) {
unset( $available_gateways['igfw_invoice_gateway'] );
}

return $available_gateways;

}

想法?

最佳答案

您的 if 语句中有一个错误(您也可以将 current_user_can() 函数用于用户角色),例如:

add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_private' );
function payment_gateway_disable_private( $available_gateways ) {
if ( ( ! is_user_logged_in() || current_user_can('customer') || current_user_can('business') )
&& isset( $available_gateways['igfw_invoice_gateway'] ) ) {
unset( $available_gateways['igfw_invoice_gateway'] );
}
return $available_gateways;
}

或使用 global $current_user;array_intersect()功能:
add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_private' );
function payment_gateway_disable_private( $available_gateways ) {
global $current_user;

// Here define your user roles
$user_roles = array( 'customer', 'business' );

if ( ( ! is_user_logged_in() || array_intersect( $current_user->roles, $user_roles ) )
&& isset( $available_gateways['igfw_invoice_gateway'] ) ) {
unset( $available_gateways['igfw_invoice_gateway'] );
}
return $available_gateways;
}

它现在应该更好地工作。

关于php - 为访客和特定用户角色禁用 WooCommerce 支付网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62263005/

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