2016-11-04 6 views
0

私たちのWooCommerceストアでは、特定の製品が購入され、確認された注文によりユーザー役割が「クラブ」メンバー(プレミアムメンバーシップ)に変更されます。WooCommerceで特定の製品を購入した後に役割とユーザーのメタ値を変更しますか?

注文IDから番号をコピーして割り当てようとしているユーザーに一意のメンバーIDを割り当てる必要があります。メタキー 'club_member_id'は、Advanced Custom Fieldsプラグインを使用して、現在のデフォルト値が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

の代わりにこの:

// 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は失敗と成功の主キーIDにfalseを返しますシンプルなWordPressの関数であり、 WP_Userクラスのパブリックメソッドにはリストされていません。

+0

多くのお客様に感謝します。これは私の問題を解決しました。 –

関連する問題