X

Agregar datos a los endpoints de la API de WooCommerce

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:

 

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.

 

Categorías: Plugins

Ver comentarios (9)

  • 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

  • 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.

  • 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.

  • 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.