Anteriormente habíamos visto cómo usar la REST API de WordPress, sin embargo también hay plugins que tienen funcionalidad de REST API integrada, en este caso veremos cómo usar la REST API de Woocommerce.
1- Activando la REST API de Woocommerce
Para activar la REST API de Woocommerce puedes hacerlo desde el dashboard de WordPress: Woocommerce > Ajustes> Avanzados > REST API.

2- Generando las Claves
En la misma pantalla de activación, verás una opción de Claves/Aplicaciones, desde aquí puedes agregar nuevas claves.

Al añadir clave verás la siguiente pantalla, en donde puedes llenar datos de la nueva clave, para este ejemplo usaremos una clave con permiso de lectura para el usuario administrador.

Tras guardar los cambios verás la generación de las claves, la clave de usuario, la clave secreta y también en código QR. Guarda los textos de las claves generadas ya que lo usaremos posteriormente.

3- Usando la REST API desde una aplicación externa
Hay disponibles algunas librerías preparadas para usar la REST API de Woocommerce, en nuestro ejemplo usaremos una librería para trabajar con PHP.
- Primero, asegúrate de tener composer instalado.
- Desde tu terminal, crea un nuevo proyecto composer
composer init
- Luego instal el paquete de dependencia
composer require automattic/woocommerce
- Finalmente crea el archivo .php con el siguiente código y reemplaza la url del sitio de origen y las claves anteriormente generadas.
require __DIR__ . '/vendor/autoload.php'; use Automattic\WooCommerce\Client; $woocommerce = new Client( 'http://TuSitioWoocommece.com', 'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', [ 'version' => 'wc/v3', ] ); print_r($woocommerce->get('products'));
En la parte final del código verás que se recupera todos los productos desde el sitio web con Woocommece, para saber que otros métodos tienes disponibles revisa la documentación oficial de Woocommerce REST API.
¿Aún con dudas?, en el siguiente video se explica en detalle cada uno de los puntos tratados anteriormente.
Excelente post e vídeo postado, mas há outros exemplos, tutos mais simples, e prático para leigos?
Hola quiero conectarme con la app desde un iPhone y me sale el siguiente mensaje no valid woocommerce API found check your URL, me podrían indicar cuál podria ser el inconveniente?
Revisa la estructura de los enlaces permanentes o Permalinks. No debe estar seleccionada la opción por defecto.
Como poner esto con credibanco
Hola quiero conectarme con la app desde un iPhone y me sale el siguiente mensaje no valid woocommerce API found check your URL, me podrían indicar cuál podria ser el inconveniente? He revisado, las opciones de los enlaces permanentes están bien
Hola, has probado primero con el código PHP de ejemplo en este artículo?, esto para descartar si hay algún problema con la API de origen.
Hola amigo necesito hacer ese trabajo de transferir un catalogo de mi provedor a,mi tienda,online necesito que se comunique con migo att,rodolfo
Hola Rodolfo, he eliminado tu correo, no deberías dejar tus datos públicos en comentarios, escríbeme a través del formulario de contacto: https://decodecms.com/contacto/
Necesito recorrer todos los productos y actualizar segun SKU con el xml que me otorgan. Sugerencias?
1000 gracias por este magnifico tutorial.
Hola, de manera general puedes usar la API de Woocommerce para ir actualizando los productos de acuerdo al bucle que crees para leer el XML, entenderás que sólo puede darte generalidades ya que es un tema de programación.
@Cristão, ¿Tengo que hacer lo mismo que usted, ha conseguido alguna solución?
Hola amigo, estoy intentando conectar mi API con un proyecto en angular e Ionic, pero realmente no puedo, ya he intentado de todo, hice lo de los links permanentes, y no obtengo nada, puedo conseguir un array pero de otras cosas, como de los post de WP, pero de los productos de WC no.
Hola, prueba primero tu API, usa el código de ejemplo en PHP que uso en este artículo, con eso descartas si es un problema con la API o con tu código cliente.
Hola necesito integrar un metodo de pago por medio de una api a mi woocommerce como podria hacerlo?
Hola, en el caso que comentas la API sería por parte de tu método de pago, sin embargo existen ya muchos plugins para WooCommerce de métodos de pago, asegúrate primero de buscar si ya hay algún plugin que use el método de pago que estas tratando de usar.
Hola, necesito integrar un HTML enviado por un proveedor con el objetivo de actualizar el inventario de los productos en tiempo real, como lo hago?
Hola Jorge te he respondido a través del formulario de contacto.
Hola, necesito conectarme pero por Node.js, y me sale un error en una de las dependencias de requeri, por que será?
Excelente tutorial .. quiero agradecerte por tanto amigo..
Tengo una consulta, espero me puedas ayudar.. tengo que sincronizar el stock de mi tienda woocommerce con el stock de sistema de facturación en la tienda física.. crees que comparar el stock de productos por el SKU y modificar su valor es posible con el API o cual sería la mejor práctica a realizar?
Hola, si claro, puedes usar la API de WooCommerce, sin embargo usa el ID, revisa este código de ejemplo: https://stackoverflow.com/questions/29258405/updating-stock-via-woocommerce-api-v2
Hola ! como hago para activar la pestaña de API, no me aparece … es hace por plugin ?
Gracias !
Hola, en versiones recientes encuentras esa opción en: Ajustes > Avanzados > REST API. He actualizado la imagen de la entrada recientemente. Saludos.
hola Jhon soy de Colombia aca se maneja un ERP llamado Siigo no se sibes como consumir su API en woocommerce
Hola, lamentablemente no he escuchado de ese ERP, tendrías que revisar la documentación para desarrolladores.
buenas tardes Jhon como estas un favor como asigno esa información JSON a un arregla Array en PHP toca decodificarla la información o ya viene decodificada o como trato los datos por favor alguna guía o tienes algún vídeo?
gracias muy buen sitio y excelente tus explicaciones
Puedes trabajarlo como JSON ya esta codificada así, revisa el siguiente enlace: https://linuxhint.com/how-to-parse-json-in-php/
Máster, sabes si existe alguna página web de woocommerce online para poder hacer pruebas con las APIs para probar los resultados?
Hola, no he visto un servicio de ese tipo, igual no es necesario, si tienes WooCommerce en un servidor podrías realizar las pruebas que quieras. Hay servidores freemium, por ejemplo https://demoswp.dev/
Hola estimado qué tal? Tengo instalado en local un WordPress corriendo con laragon y php7. Sigo todos los pasos, género la ck y sk y leyendo la documentación de woocommerce puedo hacer una prueba con postman por método get al dominio y agregándole /wp-json/wc/v2/orders?sk=xxxx xxxx&ck=xxxxxx
Pero siempre me retorna 401, creo haber configurado todo, y leí por ahí que en enlaces permanente hay que modificar algo? Yo lo tengo por defecto con URL amigable que antepone producto/nombre
Hola, el error 401 es de autorización, entiendo que todas las claves que usas son correctas, prueba subir tu WordPress a un servidor, usa un servidor que este configurado para WordPress y prueba allí ya que podría ser alguna configuración a nivel de servidor.
Saludos.
Muy buen día desde Argentina Jhon, Como puedo hacer a extender el API de wooocommerce para agregar tanto los metodos post y get mis campos personalizados de productos, estuve tratando con el hook woocommerce_api_loaded pero por lo que entiendo esta deprecado en las nuevas versiones y no me funciono, no se como inicializar de forma correcta una clase para extender WC_API_Resource.
Muchas gracias Silvio.
Hola, tendrías que agregar nuevos endpoints, por ejemplo revisa este artículo de referencia en donde se agrega endpoints a la api de WordPress: https://decodecms.com/agregar-endpoints-a-la-api-rest-de-wordpress/ , espero hacer pronto un artículo explicando lo mismo para WooCommerce.
Hola. estoy usando el plugin de wcvendors para crear multiples vendedores como puedo acceder a estos datos ya que estoy haciendo una aplicación movil y necesito listar las tiendas que tienen woocommerce
Hola, consulta con los desarrolladores del plugin, es posible que ya tengan lo que comentas, o pueden darte alguna idea de cómo hacerlo.
Hola, ¿cómo puedo hacer ese mismo request sin instalar el paquete auttomatic/woocommerce? Es decir, lo más “php nativo” posible. Gracias por el tutorial
Hola, no he revisado eso, sin embargo revisa los archivos que te descarga el paquete auttomatic/woocommerce y realiza tu propio código en base a esa lógica.
Estimado, estoy haciendo la prueba y tengo un error 500 he copiado exactamete igual el codigo y no resulta, lo probe en otro sitio y no tengo problemas
Hola, si se genera un error 500 debería quedar un registro en tu hosting de ese error, posiblemente en algún archivo error_log, allí deberías tener más detalle para tener una pista de que esta fallando. Saludos.
Hola, excelente aporte, gracias. Todo funciona ok. Sin embargo, tengo una API que contiene 6000 productos, tengo entendido que la api solo procesa de a 100 en batch, tardando aprox. 5mins.. los 6mil productos tardaría demasiado, hay alguna configuracion o otro metodo que no demorte tanto?
Hola,
En el soporte de WooCommerce no comentan nada sobre un límite, salvo sea un límite a nivel de servidor, https://wordpress.org/support/topic/rest-api-max-limit-of-products-in-update-call/ (aunque si que es posible que exista el límite pero que no este documentado)
Sin embargo, siempre es preferible, efectivamente limitar el envío de productos a actualizar, podrías evaluar tener un control de los productos actualizados y luego programar un cron de manera que se pueda ejecutar la tarea de actualización sin que tu estes pendiente.
El conector MWSConnect, que se conecta a cualquier origen de datos (excel, csv, oracle, sql server, xml, etc), usa las API de WooCommerce para la creación de productos, categorías y marcas y para la sincronización de stocks y precios de forma masiva. Por si alguien le pudiera interesar conocerlo con más detalles.
Saludos
Muchas gracias por tu aporte, realmente excelente.
estoy teniendo el siguiente problema:
➜ Obteniendo datos origen …
➜ Obteniendo los ids de los productos…
PHP Fatal error: Uncaught Automattic\WooCommerce\HttpClient\HttpClientException: JSON ERROR: Syntax error in /home/nic/Desarrollo/lrivas/detodito/stock/vendor/automattic/woocommerce/src/WooCommerce/HttpClient/HttpClient.php:378
Stack trace:
Hola, según el mensaje indica un error de sintaxis, prueba con otras versiones de PHP, prueba a partir de las 7.2 por ejemplo. Es posible también que la implementación de tu código tenga errores, revisa bien el video y el código para descartar esto.
Hola amigo, tengo este problema y no he hallado la solución, podrías ayudarme. Un saludo!!
Fatal error: Uncaught Automattic\WooCommerce\HttpClient\HttpClientException: cURL Error: Couldn’t resolve host.
Hola, puede que sea un problema de configuración del servidor. De ser posible prueba con otro server.
Hola una pregunta o una información como haría para integrar una API de venta de recargas telefónicas a mi web y con que plugin se puede hacer
Hola, creo que lo que planteas es algo personalizado, no hay un plugin genérico para esto.
Como puedo hacer si la aplicación externa tiene contraseña?
En que parte del código se la debo poner?
Si es una API de origen debería estar en su documentación
hola tengo una consulta, resulta que quiero realizar esta consulta pero a la inversa, primero que nada obtener todos los productos que tengo en woocommerce lo cual puedo realizar con esta linea = “print_r($woocommerce->get(‘products’));” pero no necesito todos los atributos, solo me interesa el sku, nombre, precio, y stock.
como podria hacerlo?
Hola, tal como lo planteas, posiblemente tengas que hacer un endpoint personalizado con sólo los datos que requieres, revisa: https://decodecms.com/agregar-datos-a-los-endpoints-de-la-api-de-woocommerce/
Buenas,
Necesito conectar mi Woocommerce con un ‘Web Services’ de una aplicación externa. Serviría para enviar datos desde el Woocommerce a esta aplicación externa.
Entiendo que primero debo activar la API Rest de Woocommerce. ¿Cierto?
Mi pregunta es si luego de activar la API puedo realizar la conexión con el «web service» usando los hooks disponibles de woocommerce. Me refiero a hooks que podrían poner, por ejemplo, en functions.php
¿Conoces algún tutorial (puede ser inglés también) para todo lo que se debe hacer luego de la creación del API?
Muchas gracias.
Hola, si quieres enviar datos desde WooCommerce a un servicio remoto no necesitas activar la API; si quieres leer desde un servicio remoto los datos de WooCommerce, en ese caso si necesitas activar su API. Lo usual es lo segundo, es decir que desde un servicio externo se lea los datos de WooCommerce cada X tiempo. Si tienes dudas sobre esto mejor escríbeme a través del formulario de contacto. https://decodecms.com/contacto