在我们的WooCommerce商店,我们有一个特定的产品,购买时,订单确认将用户角色更改为俱乐部'会员(高级会员)。
我们还需要为用户分配一个唯一的成员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文件中。提前谢谢。
答案 0 :(得分:0)
而不是:
// 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_meta
和delete_user_meta
是简单的WordPress函数,它们在失败时返回false,成功时返回主键id,它们未列在WP_User类的公共方法中。