• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Plugins / Agregar datos a los endpoints de la API de WooCommerce

Agregar datos a los endpoints de la API de WooCommerce

Agregar datos a los  endpoints de la API de WooCommerce

[ 31 marzo 2020 ] [ Autor: Jhon Marreros Guzmán ][ Plugins - Avanzado] [ ]

funcionalidad mejoras woocommerce

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

En un artículo anterior habíamos visto cómo usar la REST API de WooCommerce, sin embargo ¿Cómo agregar información adicional a los endpoints que tiene por defecto la API de WooCommerce?, en este artículo veremos cómo realizar esto de manera práctica.

 

Resultado Final

Al final obtendremos algo similar a lo que se muestra en la siguiente imagen:

Datos adicionales a endpoint producto API WooCommerce

 

Generalidades

En nuestro ejemplo agregaremos información adicional al endpoint de producto que devuelve la API de WooCommerce, sin embargo es posible hacer lo mismo con cualquier Custom Post Type de WooCommerce. El Hook que usaremos será:

woocommerce_rest_prepare_$THIS->POST_TYPE_object

En este hook se puede reemplazar $THIS->POST_TYPE por algún custom post type de WooCommerce como: product, shop_order, shop_coupon

Puedes ver una lista completa de los Hooks de WooCommerce en el siguiente enlace

 

Código para agregar información a un Producto

El siguiente código agrega un campo de marca a la información devuelta por la API de WooCommerce para un producto. La marca se asume que esta almacenada como metadata.

add_filter( 'woocommerce_rest_prepare_product_object', 'wc_rest_api_add_custom_data_to_product', 100, 3 );
function wc_rest_api_add_custom_data_to_product( $response, $object, $request ) {
  //Cambiar esta línea de acuerdo a tus necesidades
  $response-> data['marca'] = get_post_meta($object-> get_id(), 'marca', true);
  return $response;
}

En el código anterior:

  • Usamos el Hook woocommerce_rest_prepare_product_object que hace referencia a la función wc_rest_api_add_custom_data_to_product
  • La función tiene tres parámetros, uno de los más importantes es la respuesta, a través de la variable $response en donde se pueden agregar elementos adicionales como un array asociativo.
  • El otro parámetro $object, es el objeto de producto actual, y en el ejemplo se usa para obtener el ID del producto
  • En el ejemplo asumimos que queremos agregar la metadata de marca al producto a través de la función get_post_meta()

Para ver cómo usar los endpoints de la API de WooCommerce puedes revisar la documentación oficial de la API de WooCommerce

 

Conclusión

Como puedes ver se puede agregar datos adicionales a los endpoints de la API de WooCommerce, a través de un Hook, ya sea para productos, órdenes o cupones.

 
¿Aún con dudas?, en el siguiente video se detalla la aplicación del código anterior.

Suscríbete a DecodeCMS:  

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • REST API WoocommerceCómo usar la REST API de WooCommerce
  • REST API en WordPressCómo usar la REST API de WordPress
  • SMTP en WordPress, configuración para envío de correosSMTP en WordPress, configuración para envío de correos
  • Mostrar el nombre del archivo que esta usando un themeMostrar el nombre del archivo que esta usando un theme
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (4 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Comentarios

  1. Anthony Hammett

    2 abril, 2020

    Tu sitio es genial y el valor que nos entregas no tiene comparación!

    • Jhon Marreros Guzmán

      3 abril, 2020

      Gracias Anthony. Saludos.

  2. milet

    6 mayo, 2020

    tus paginas me han ayudado mucho , pero tengo una pregunta si quiero agregar a la api rest de woocomerce especialmente en pedidos en billing dos campos adicionales que estan en la base de datos . como se podria realizar .Quedo pendiente

    • Jhon Marreros Guzmán

      7 mayo, 2020

      Hola Milet
      La única variación que veo es obtener los campos de tu base de datos, por lo demás la lógica sería similar a como se detalla en este artículo. Si tus datos estan en la base de datos de WordPress puedes usar las funciones del propio WordPress, revisa este artículo de guia: https://decodecms.com/mostrar-datos-desde-una-tabla-personalizada-de-la-base-de-datos-de-wordpress/

  3. Pepe

    22 noviembre, 2020

    Hola a todos,
    A través del API modifico datos de un cliente desde un ERP y uno de los parametros que quiero modificar es el ROL del cliente, pero este es en modo lectura.
    ¿Como podría personalizar un codigo PHP, al cual le pueda realizar la llamada con los parámetros correspondientes de IdCliente, para asignarle el ROL que le diga?

    gracias.

    • Jhon Marreros Guzmán

      26 noviembre, 2020

      Hola, a través de la API veo que puedes actualizar el usuario y sus roles: https://developer.wordpress.org/rest-api/reference/users/#update-a-user , al menos eso es lo que dice la documentación.

  4. Franklyn Ortega

    10 agosto, 2021

    Hola, eres un crack la verdad, te felicito por tu blog lo frecuento mucho, no se si es posible que me ayudes con un requerimiento, el tema es que necesito recuperar el peso del articulo, pero en el endpoint Orders->line_items pero no he logrado conseguirlo, lo he intentado pero no he logrado conseguirlo,

    si me puedes dar luces te lo agradezco muchísimo.

    Sigan haciendo buen web.

    • Jhon Marreros Guzmán

      11 agosto, 2021

      Hola, tal vez los puedas agregar como metadata del ítem de la orden, revisa este código: https://gist.github.com/bekarice/f1ba5b8e2f3c62d82a5cbc100dc3e1ad

  5. Danny

    19 noviembre, 2022

    Hola amigo muy buena información, quiero que me ayudes en algo estoy usando el endpoint de enlistar todo el detalle de pedidos pero tengo un problema no logro que en el detalle de los producto se muestre los atributos del producto o las etiquetas del producto, te agradezco mucho me des una guía.
    Saludos.

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Presentación

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Jooble
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad social woocommerce

Populares

Mover WordPress manualmente

Agregar campos adicionales al perfil de usuario

Actualizar el stock de productos usando la API de WooCommerce

Mover el precio de variaciones de producto en WooCommerce

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2023 Todos los derechos reservados