在WooCommerce上购买特定产品后更改角色和用户元值


Change role and user meta value after purchase of specific product on WooCommerce?

在我们的WooCommerce商店中,我们有一个特定的产品,当购买并确认订单时,用户角色将更改为'club'会员(高级会员)。

我们现在还需要为用户分配一个唯一的成员ID,我试图通过复制订单ID的数字来分配该用户。元键'club_member_id'已被添加为用户的自定义字段,当前默认值为1,通过高级自定义字段插件。

下面的源代码将用户角色更改为'club',但不更改'club_member_id'的元值。有人能解释一下吗?

//Change role and add Club ID if club membership is bought
function lgbk_add_member( $order_id ) {
$order = new WC_Order( $order_id );
$items = $order->get_items();
foreach ( $items as $item ) {
    $product_name = $item['name'];
    $product_id = $item['product_id'];
    $product_variation_id = $item['variation_id'];
    $original_cid = get_user_meta('club_member_id');
    $meta_key = 'club_member_id';
    $meta_value = $order_id;
if ( $order->user_id > 0 && $product_id == '7968' ) {
    update_user_meta( $order->user_id, 'paying_customer', 1 );
    $user = new WP_User( $order->user_id );
    // Remove role
    $user->remove_role( 'customer' );
    // Add role
    $user->add_role( 'club' );
    // Remove club member ID
    $user->delete_user_meta($user, $meta_key);
    // Add club member ID
    $user->add_user_meta($user, $meta_key, $meta_value);
    } 
  }
} add_action( 'woocommerce_order_status_completed', 'lgbk_add_member' );

这段代码位于主题的functions.php文件中。

而不是:

 // Remove club member ID
 $user->delete_user_meta($user, $meta_key);
 // Add club member ID
 $user->add_user_meta($user, $meta_key, $meta_value);

我将这样做:

// Remove club member ID
delete_user_meta($order->user_id, $meta_key);
// Add club member ID
add_user_meta( $order->user_id, $meta_key, $meta_value);

add_user_metadelete_user_meta是简单的WordPress函数,失败时返回false,成功时返回主键id,它们没有列在WP_User类的公共方法中。