根据可变增量自动将商店经理分配给新的 WooCommerce 订单

Auto assign a shop manager to a new WooCommerce order based on variable increment

我正在尝试将每个新订单分配给商店经理列表。我需要的就像一个队列,所以每次创建新订单时都会分配给队列中的下一个店长。

这是我的代码:

function before_checkout_create_order($order, $data) {
    global $i;
    switch ($i) {
        case 0:
            $user = get_user_by('email', 'firstShopManagere@example.com');
            break;
        case 1:
            $user = get_user_by('email', 'secondShopManager@example.com');
            $i=0;
            break;
    }
    $userLastName = $user->user_lastname;
    $order->update_meta_data('asesor_asignado',$userLastName);  
    $i++;
}
add_action('woocommerce_checkout_create_order', 'before_checkout_create_order', 20, 2);

我现在处理的问题是$i变量无法存储,即使我增加了不变的值,以便下一次该值是0 再次。同样,每次 $i 达到 4,它应该回到 0

有什么建议吗?

要管理 $i,您可以使用以下 WordPress 功能:

这些将允许您在每次调用挂钩回调函数时修改或重置$i

所以你得到:

function action_woocommerce_checkout_create_order( $order, $data ) {
    // Initialize
    $i = 0;
    $user = '';

    // Option does not exist
    if ( ! get_option( 'my_counter') ) {
        // Adds a new option
        add_option( 'my_counter', $i );
    } else {
        // Get value
        $i = get_option( 'my_counter' );
    }

    // Compare
    switch ( $i ) {
        case 0:
            $user_name = 'user_0';
            break;
        case 1:
            $user_name = 'user_1';
            break;
        case 2:
            $user_name = 'user_2';
            break;
        case 3:
            $user_name = 'user_3';
            break;
        case 4:
            $user_name = 'user_4';
            break;
    }

    // Update meta data
    $order->update_meta_data( 'asesor_asignado', $user_name ); 
   
    // $i less than
    if ( $i < 4 ) {
        // increment
        $i++;
    } else {
        // Reset
        $i = 0;
    }

    // Updates the value of an option that was already added
    update_option( 'my_counter', $i );
}
add_action( 'woocommerce_checkout_create_order', 'action_woocommerce_checkout_create_order', 10, 2 );