2016-11-04 30 views
0

在我們的WooCommerce商店,我們有一個特定的產品,在購買並確認訂單時將用戶角色更改爲「俱樂部」成員(高級會員)。在WooCommerce購買特定產品後更改角色和用戶元值?

我們現在還需要爲用戶分配一個唯一的成員ID,我試圖通過從訂單ID複製數字來分配該用戶。通過高級自定義字段插件,元鍵「club_member_id」已添加爲當前默認值爲1的用戶的自定義字段。

下面的源代碼將用戶角色更改爲「俱樂部」,但不會更改「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

取而代之的是:

// 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的功能,這將失敗,並主鍵ID返回false成功,他們沒有在WP_User類的公共方法中列出。

+0

非常感謝。這解決了我的問題。 –

相關問題