0

私は woocommerce で wordpress を使用しており、次のステップを自動化したいと考えています。注文が完了したら、その注文 ID に関連付けられているユーザー ロールを「顧客」から「購読者」に変更したいと考えています。


調べてみると、functions.php のフックを使用してこれを達成できるはずだと思います。

add_action( 'woocommerce_order_status_completed', 'change_role_from_customer_to_subscriber' );

次に、関数を追加します。

function change_role_from_customer_to_subscriber($order_id){
// code to change role to subscriber
}


コードでは、次の 2 つのことを行う必要があると思います:
1) そのオーダー ID に関連付けられているユーザー ID を取得する
2) そのユーザー ID のロールをサブスクライバーに変更する


いろいろ試しましたが、うまくいきませんでした (正しいユーザー ID を取得することも、ユーザー ID の役割を変更することもできませんでした)。だからどんな助けでも大歓迎です!以前にスタック オーバーフローに関する 2 つの関連する質問を見たことがありますが、残念ながらその回答はうまくいきませんでした。誰かが私を助けてくれることを願っています!

どうもありがとう!:)

4

2 に答える 2

2

ワードプレスの回答からの Helgatheviking は、次のコードを思いつきました。

function wpa_120656_convert_paying_customer( $order_id ) {

$order = wc_get_order( $order_id );

if ( $order->user_id > 0 ) {
    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( 'subscriber' );
}
}
add_action( 'woocommerce_order_status_completed', 'wpa_120656_convert_paying_customer' );


なんらかの理由で数回試行しましたが、うまくいきました!助けてくれてありがとう!:)

于 2013-10-30T22:00:51.237 に答える