【问题标题】:Woocommerce default role and role after purchaseWoocommerce默认角色和购买后的角色
【发布时间】:2015-06-21 06:28:31
【问题描述】:

我找到了this thread,但它并不完全符合我的要求。

我的问题是,如何将默认 Woocommerce 角色“客户”更改为,例如新注册用户的“订阅者”。 然后,如果用户结帐(购买产品),将角色从“订阅者”更改为“客户”。

我问这个是因为我想为每个用户角色显示不同的内容:“注册客户”和“订阅(付费)客户”。

【问题讨论】:

标签: php wordpress woocommerce registration roles


【解决方案1】:

您问题的第一部分是更改由 WooCommerce 创建的用户的默认角色。老实说,我可能会将默认角色保留为客户。然后为购买您的特定产品的人创建新的角色/能力。

add_filter( 'woocommerce_new_customer_data', 'so_29647785_default_role' );

function so_29647785_default_role( $data ){
    $data['role'] = 'subscriber'; // the new default role
    return $data;
}

正如您在我的其他答案中看到的(以及我重新发布的答案),您可以在用户完成付款后执行操作,但要挂上 woocommerce_order_status_completed 钩子。

要调整该代码以针对特定产品执行特定操作,您需要遍历订单项目并根据产品 ID 检查它们。将 999 替换为相关产品的 ID。

add_action( 'woocommerce_order_status_completed', 'so_29647785_convert_customer_role' );

function so_29647785_convert_customer_role( $order_id ) {

    $order = new WC_Order( $order_id );

    if ( $order->user_id > 0 ) {

        foreach ( $order->get_items() as $order_item ) {

            if( 999 == $order_item[ 'product_id' ] ) {
                $user = new WP_User( $order->user_id );

                // Remove existing role
                $user->remove_role( 'customer' ); 

                // Add new role
                $user->add_role( 'subscriber' );        
            }

        }

    }
} 

注意:完全未经测试,但在理论上似乎是正确的。

【讨论】:

  • 感谢您的回答!我将在我的网站上对此进行测试。关于将默认角色更改为“订阅者”。你是对的,保留默认角色“客户”是有意义的,然后创建一个新角色,例如结帐用户的“付费客户”。
猜你喜欢
  • 1970-01-01
  • 2019-12-29
  • 1970-01-01
  • 2015-10-06
  • 2018-04-10
  • 2017-03-18
  • 2021-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多