簡體   English   中英

根據WooCommerce年度訂單數更改用戶角色

[英]Change user role based on WooCommerce yearly orders count

我正在嘗試實現一項功能,即在完成一定數量的訂單后,客戶將獲得新的用戶角色,但所有這些訂單必須在同一年內完成。

我能夠基於第n個訂單來分配用戶角色,但似乎無法超出需要考慮日期的地方,有人可以向我指出正確的方向還是指出我可能缺少的內容。

到目前為止,這是我嘗試過的。

function change_user_role_on_order_status_completed( $order_id ) {

    $order = new WC_Order( $order_id );

    $user_id = $order->user_id;

    $order_this_year = false;

    $current_date = date('Y');

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

    if ( $total_orders > 1 ) {
        foreach ($order->get_items() as $item_key => $item_values):

            // Get the item date
            if ($item_date = $item_values->get_date_completed()->format ('Y') == $current_date) {
                $order_this_year = true;
            }

        endforeach;

        if ($order_this_year) {
            $user = new WP_User( $order->user_id );

            // Set role editor
            $user->set_role( 'customer_club' ); 
        }

    }
}

add_action( 'woocommerce_order_status_completed', 'change_user_role_on_order_status_completed', 10, 1 );

在這里使用WC_Order_Query是一種基於年度訂單數來更改用戶角色的更輕松,更簡單的方法:

add_action( 'woocommerce_order_status_completed', 'change_user_role_on_order_status_completed', 10, 2 );
function change_user_role_on_order_status_completed( $order_id, $order ) {
    // Here set the minimal order count
    $min_orders_count = 3;

    // The WC_Order_Query
    $queried_orders = wc_get_orders( array(
        'limit'        => -1,
        'customer_id'  => $order->get_customer_id(),
        'date_paid'    => '>=' . date('Y') . '-01-01', // or 'date_created'
        'return'       => 'ids'
    ) );

    if ( sizeof($queried_orders) >= $min_orders_count ) {
        // Get an instance of the customer WP_User Object
        $user = $order->get_user();

        // Change the user role
        $user->set_role( 'customer_club' );
    }
}

代碼進入您的活動子主題(或活動主題)的function.php文件中。 經過測試和工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM