Soporte » Plugins y Hacks » WooCommerce » ¿Evitar crear usuario cuando la orden no es pagada?

  • Resuelto jaoc159

    (@jaoc159)


    Como puedo hacer para que al momento de pagar o al estar en la sección de finalizar pedido y entrar al paypal y en vez de pagar darle en regresar a la tienda no cree un usuario anteriormente establecido en el formulario de finalizar pedido.

    No me interesa conservar el registro de los que no hicieron el pago, lo que pasa que esta basada en una suscripción mensual y existen secciones que no tienen que ver los visitantes, por lo cual quiero que solo registre como clientes a los que en verdad pagaron. La opción de Woocommerce en ajustes esta puesta y aún así genera el usuario :C

    Espero alguien me pueda ayudar

    En cuentas y privacidad la tengo configurada de esta manera:

    Pago como invitado
    *Desactivado* Permite a los clientes hacer pedidos sin tener una cuenta
    *Desactivado*Permite a los clientes acceder a una cuenta existente al finalizar compra

    Creación de cuenta
    *Activo* Permite a los clientes crear una cuenta al finalizar compra.
    *Desactivado* Permite a los clientes crear una cuenta en la página «Mi cuenta».
    *Desactivado* Al crear una cuenta, genera automáticamente para el cliente un nombre de usuario de cuenta según su nombre, apellido o correo electrónico
    *Desactivado* Al crear una cuenta, crea automáticamente una contraseña para la cuenta

    PD: El sitio web es de un cliente

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 1 respuesta (de un total de 1)
  • Moderador Jose Luis

    (@jose64)

    Hola

    El problema es que primero se crea el usuario y después se procesa el pago, la orden siempre se crea, aunque quede pendiente de pago. Lo que puedes hacer es borrar los usuarios «Cliente» que no tengan pedidos completados.

    Añadiendo este código al archivo functions.php de tu tema hijo o en un plugin de personalizaciones creas una columna en el listado de usuarios donde puedes ordenarlos por cantidad de pedidos y borrar los que no tengan ningún pedido realizado:

    add_filter( 'manage_users_columns', 'prefix5487_modify_user_columns' );
    
    function prefix5487_modify_user_columns( $column ) {
        $column['orders'] = __( 'Order count' );
        return $column;
    }
    
    add_filter( 'manage_users_custom_column', 'prefix5487_user_order_column_value', 10, 3 );
    
    function prefix5487_user_order_column_value( $val, $column_name, $user_id ) {
        switch ($column_name) {
            case 'orders' :
                return wc_get_customer_order_count( $user_id );
            default:
        }
        return $val;
    }
    
    add_filter( 'manage_users_sortable_columns', 'prefix5487_make_registered_column_sortable' );
    
    function prefix5487_make_registered_column_sortable( $columns ) {
        return wp_parse_args( array( 'orders' => 'orders' ), $columns );
    }

    Si quieres ver la fuente del código:

    How to delete users with no order history through phpmyadmin sql?

    Recuerda cerrar el debate marcándolo como resuelto cuando así lo consideres, de esta forma nos ayudas a mantener el foro al día.

Viendo 1 respuesta (de un total de 1)
  • El debate ‘¿Evitar crear usuario cuando la orden no es pagada?’ está cerrado a nuevas respuestas.