如果订单计数超过,则更改用户角色

时间:2017-02-15 作者:Alex Pain

根据这个answer 我想统计每个用户的订单,例如,如果计数>3,则将角色更改为另一个。

搜索后我找到了这个hook

我修改了函数

function wpa_120656_convert_paying_customer( $order_id ) {

    $order = new WC_Order( $order_id );

    $int = wc_get_customer_order_count( $user_id );

    if ( $int->user_id > 2 ) {
        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( \'dovclient\' );
    }
}
add_action( \'woocommerce_order_status_completed\', \'wpa_120656_convert_paying_customer\' );
但它不起作用。。。请帮我找出一个错误!

1 个回复
SO网友:Alex Pain

感谢所有帮助我找到答案的人(0个帮助者)!我自己找到了解决办法。

function wpa_120656_convert_paying_customer( $order_id ) {

    $order = new WC_Order( $order_id );

    $user_id = $order->user_id;

    $customer_orders = get_posts( array(
        \'numberposts\' => -1,
        \'meta_key\'    => \'_customer_user\',
        \'meta_value\'  => $user_id,
        \'post_type\'   => \'shop_order\',
    ) );

    if ( $customer_orders > 1 ) {
        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( \'dovclient\' );
    }
}
add_action( \'woocommerce_order_status_completed\', \'wpa_120656_convert_paying_customer\' ); 

相关推荐

About Hooks and Filters

嗯,我很难理解动作和过滤器之间的区别。我确实在代码中使用动作,但我是一个新手,甚至连一点过滤器都不知道。我去过codex,以及NickTheGeek、BillErickson、GaryJones等的多个网站,但没有去过vein。如果你能用简单的话告诉我,并举例说明动作、过滤器和挂钩的基本内容和区别。非常感谢。