es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Agregar una nota de pedido a los nuevos pedidos de clientes en WooCommerce

Estoy intentando agregar una función en la que se agregue una nota de pedido de administrador para todos los clientes nuevos.

El código que estoy intentando usar es:

add_action('woocommerce_thankyou', 'is_returning_customer', 10, 1);

function is_returning_customer($order_id)
{
    if (!$order_id) {
        return;
    }
    if (is_user_logged_in()) {
        $order_status = array('wc-on-hold,', 'wc-processing', 'wc-completed');
        $customer_id = get_current_user_id();
        $customer_orders = get_posts(array(
            'meta_key' => '_customer_user',
            'meta_value' => $customer_id,
            'post_type' => 'shop_order',
            'post_status' => $order_status,
            'numberposts' => -1
        ));
    }
    if (count($customer_orders) >= 1) {
        $order = wc_get_order($order_id);
        $note = '*** Nuevo cliente ***';
        $order->add_order_note($note);
        $order->save();
    }
}

Sin embargo, el problema es que se está agregando la nota del nuevo cliente a todos los pedidos. ¿Algún consejo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema es que el código está comprobando el número de pedidos del cliente, pero no distingue entre el primer pedido y los pedidos posteriores. Para añadir la nota del nuevo cliente solo en el primer pedido, puedes actualizar la condición en la línea 20 para comprobar si la cuenta de pedidos del cliente es igual a 1, en lugar de ser mayor que 1. Esto asegurará que la nota se añada solo para el primer pedido. Aquí está el código actualizado:

    add_action('woocommerce_thankyou', 'is_returning_customer', 10, 1);
    
    function is_returning_customer($order_id) 
    {
        if (!$order_id) {
            return;
        }
        if(is_user_logged_in()) {
            $order_status = array('wc-on-hold,','wc-processing', 'wc-completed');
            $customer_id = get_current_user_id(); 
            $customer_orders=get_posts( array(
                'meta_key' => '_customer_user',
                'meta_value' => $customer_id,
                'post_type' => '
    

Comments are closed.