Api Rest WordPress para Subir Imágenes

upload_images_wordpres_feature_message

Seguro te encontraste en algún momento automatizando un proceso, y quisiste saber como subir las imágenes a WordPress con uso de sus API aquí te explico rápidamente como hacerlo.

Sube Imágenes a wordpress por Api

Api V2 Media

Wordpress nos permite conectarnos a la información mediante el uso de su api, con esto
podemos manipular datos, leer información de post, imágenes y mucho más podemos ver a detalle
en la documentación de WordPress Rest Api.

Ahora enfoquemonos la librería media que nos muestra la documentación:

upload_images_wordpress_api_url_media

Para realizar la prueba de esta api necesitamos la url de nuestro sitio web
si estamos en local usamos 127.0.0.1 o localhost o si tenemos nuestro sitio público sería:


nombre_sitio/wp-json/wp/v2/media

Probemos desde postman consumir este sitio

upload_images_wordpress_api_get_media

En el ejemplo vemos que si realizamos una petición GET nos devuelve la información de los archivos
que tenemos en nuestro wordpress, como el tipo de imagen, el lugar donde está almacenada, tamaños, y mucho más.

Ahora a esa misma url vamos a hacerle una petición tipo POST para cargar una imagen.

Media Upload

Para realizar la petición POST necesitamos algunos parámetros para poder tener acceso, en este caso podemos
realizar una prueba solo cambiando el tipo de petición de GET por POST y tenemos:

upload_images_wordpress_api_url_not_access

Los parámetros requeridos son:

Autenticación: es necesario que primero podamos autenticarnos en el request, para esto se puede realizar
utilizando una autorización básica o por OAuth o por JWT, podemos ayudarnos de diferentes plugins para esto.

En nuestro caso utilizaremos la autenticación básica para esto podemos desde POSTMAN utilizar la opción autenticació
básica:

upload_images_wordpress_api_url_basic_authentication

Ahí bastaría con agregar usuario y contraseña de nuestro WordPress, claro primero verificar que el usuarios a utilizar
tenga los permisos necesarios para poder conectarse.

Luego de realizado este paso si te presenta un mensaje como el siguiente:

upload_images_wordpress_api_request_not_allowed

Sorry, you are not allowed to create posts as this use con estado 401 entonces necesitamos utilizar el siguiente
plugin que nos permite aceptar la autenticación Básica en nuestro WordPress.

Toma en cuenta que el uso de este plugin no es recomendado si no usas SSL en ese caso mejor utilizar OAuth, mas que nada por que las claves de acceso estarán en las peticiones, bueno esto depende mucho donde se esté utilizando este código.

Nos descargamos como .zip y lo descomprimimos en la carpeta de plugin, seguido de esto procedemos a activarle, en este caso el plugin lo que hace es utilizar 2 Hooks, que permite aceptar la autenticación y con esto el api ya puede responder a una petición POST.

Antes de realizar cambios en tu wordpress no olvides sacar el respaldo de tu sitio y tu base de datos.

Subimos el archivo y lo descomprimimos en nuestro servidor, luego de esto vamos a nuestro administrador y habilitamos el plugin.

upload_images_wordpress_api_basic_auth_plugin

upload_images_wordpress_api_basic_auth_plugin_activate

Listo con esto realizamos nuevamente la petición y la respuesta que tenemos es distinta.

upload_images_wordpress_api_no_data_response

Ahora completemos los Headers, dos partes importantes tenemos aquí la una es el Content-Type y el Content-Disposition, los vamos a agregar como se muestra en la siguiente figura, en filename llenaremos el nombre con el que la imagen subirá al servidor.

upload_images_wordpress_api_upload_with_response

Ahora revisemos el Body del Request vamos a seleccionar tipo Binary, aquí decimos a Postman que nos procese la imagen en Binario para luego subirle es importante este tipo porque así acepta los datos WordPress.

Como vemos en la imagen anterior el servicio nos responde con un JSON con la estructura de la nueva imagen que fue subida, aquí podemos obtener características como el ID, la url que usa la imagen para mostrarse dentro de guid – rendered y mucha información más.

De esta manera ya tenemos funcionando desde POSTMAN la subida de imágenes por API a nuestro sitio WordPress, si tienes dudas puedes contactarnos estaremos gustosos de ayudarte.