【问题标题】:Avoid product backorders for "customer" user role in Woocommerce避免 Woocommerce 中“客户”用户角色的产品缺货
【发布时间】:2019-04-11 21:54:45
【问题描述】:

我有两种角色,普通客户和批发客户。批发客户应该可以延期交货,普通客户不允许延期交货。我不是 php 开发人员,我的代码还没有工作,请帮助我使其工作:

add_filter( 'woocommerce_product_backorders_allowed', 'woocommerce_product_backorders_allowed', 10, 3 );
function woocommerce_product_backorders_allowed( $backorder_allowed, $product_id, $product ){
    $targeted_user_role = 'zakelijke_klant';
    $user_data = get_userdata(get_current_user_id());
    if ( in_array( $targeted_user_role, $user_data->roles ) ) {
         $backorder_allowed = true;
    }
    return $backorder_allowed;
}

【问题讨论】:

  • 代码肉眼看起来不错。您可以进行某种调试以查看此过滤器功能是否接收控制。一个非常简单的方法是使用wp_mailecho $product_id。它会告诉我们过滤器没有任何语法错误并且正在被调用。

标签: php wordpress woocommerce product user-roles


【解决方案1】:

尝试以下针对普通“客户”用户角色的操作:

add_filter( 'woocommerce_product_backorders_allowed', 'woocommerce_product_backorders_allowed', 10, 3 );
function woocommerce_product_backorders_allowed( $backorder_allowed, $product_id, $product ){
    if ( current_user_can('customer') ) {
        $backorder_allowed = false;
    } else {
        $backorder_allowed = true;
    }

    return $backorder_allowed;
}

代码进入您的活动子主题(活动主题)的 function.php 文件中。经过测试并且可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 2019-12-29
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2018-08-16
    相关资源
    最近更新 更多