REST API woocommerce: no se muestran todos los clientes en GET/clientes

2 minutos de lectura

Resumen del problema

estoy tratando de buscar todos los clientes con CARTERO usando lo último API de Woocommerce (v3):

GET/customers 

Aún solo se devuelve un pequeño segmento. El número de clientes devueltos es 28 (X-WP-Total) que es mucho menos que los más de 150 clientes que tengo en el sistema.

¿Tienen alguna idea de por qué solo se devuelve un subconjunto de todos los clientes en lugar de todos? ¿Tiene esto algo que ver con la forma en que configuro woocommerce? ¿O simplemente estoy usando la API incorrectamente?

lo que he intentado

Mi meta es crear una pequeña aplicación para buscar un cliente por teléfono/correo electrónico y luego traer los pedidos que había hecho.

Vocación

GET/customers 

Solo devuelve un pequeño subconjunto de todos los clientes y el resto se omite.

Cualquier cliente omitido desde el OBTENER/clientes también devolverá una matriz vacía cuando, por ejemplo, uso

GET/customers?email=...
GET/customers?search=...

Las solicitudes devuelven una matriz vacía en los clientes omitidos, pero funcionan en los clientes que no se omitieron de:

GET/customers 

Sin embargo, dada una identificación de cliente omitida conocida, es posible buscar a ese cliente enviando una solicitud a

GET/customer/{ID} 

lo cual no tiene ningún sentido.

  • ¿Has encontrado alguna solución? También estoy enfrentando el mismo problema. API respondiendo solo un cliente

    – jayant rawat

    19 de junio de 2020 a las 5:55

La solución es poner:

GET/customers?role=all

Pensé que GET/clientes solo devuelven por defecto a los clientes cuyo rol es ‘cliente’.

Sin embargo, dado que también uso membresías/suscripciones, a un cliente se le asigna automáticamente un nuevo rol (“suscriptor”) cada vez que opta por una membresía. Por lo tanto, ese cliente no estaría incluido en la respuesta ya que su papel ya no es el de ‘cliente’.

Espero que esto ayude a cualquiera que se encuentre con el mismo problema.

  • No estoy seguro de cómo funciona role=all en un solo sitio, pero un sitio múltiple solo enumera mi propio usuario cuando usa esto. Tengo el mismo problema que tuviste, donde ningún cliente aparece en la lista usando el GET /clientes predeterminado, aunque hay algunos.

    – Neurona Oscura

    1 de junio de 2020 a las 14:43

  • Estaba usando la gema woocomerce_api y me funcionó lo siguiente: $woocommerce.get('customers', orderby: 'id', filter: { role: 'all' }). tuve que anidar role=all por debajo filter.

    – Kartikey Tanna

    5 de octubre de 2021 a las 4:13


  • ¡Gracias hombre! ¡Estaba tan confundido!

    – Kamal Alhomsi

    6 ene a las 13:12

¿Ha sido útil esta solución?