En la parte anterior de la serie, observamos cómo podemos usar la API REST de WP para recuperar el contenido del servidor. Aprendimos a recuperar contenido para diferentes recursos, incluyendo publicaciones, metadatos, etiquetas, categorías, etc. Esta es una característica poderosa ya que este contenido se puede usar en cualquier lugar dentro o fuera de WordPress.
También aprendimos sobre la OPCIONES
solicite que auto-documente la API enumerando todas las rutas, sus puntos finales y sus respectivos argumentos. Esto disminuye la necesidad de confiar en una documentación externa para la API y permite que los cambios se detecten con bastante rapidez en caso de que la API se haya actualizado o cambiado..
Habiendo examinado estas características, en el tutorial actual ahora centraremos nuestra atención en las otras tres operaciones de CRUD, es decir, crear, actualizar y eliminar datos mediante la API REST de WP..
En este tutorial, vamos a:
Así que empecemos analizando qué recursos son compatibles con los métodos de creación, actualización y eliminación mediante la API REST de WP..
Antes de sumergirnos directamente en la creación y actualización de datos con la API REST de WP, debemos analizar qué rutas son compatibles con los métodos de creación y actualización. Hacemos esto comprobando las rutas y el metodos
Propiedad en sus puntos finales. Esto se puede hacer enviando un OPCIONES
Solicitud a rutas individuales, pero una forma más conveniente es enviar un OBTENER
solicitud a la / wp-json
Ruta de índice como hicimos en la parte anterior de la serie..
Enviando un OBTENER
solicitud a la / wp-json
ruta devuelve un objeto que contiene todas las rutas y sus puntos finales en el rutas
propiedad.
Es en estas rutas individuales que podemos verificar si un recurso específico es compatible ENVIAR
, PONER
, y BORRAR
metodos Comencemos analizando la Mensajes recurso.
los Mensajes recurso expone datos con las siguientes dos rutas:
/ wp / v2 / posts / wp / v2 / posts / (? P[\ d] +)
La primera ruta apunta a la colección del objeto post, y su método
La propiedad es la siguiente:
"métodos": ["GET", "POST"],
Esta metodos
propiedad muestra que la / mensajes
rutas de apoyo OBTENER
y ENVIAR
Métodos para recuperar y crear datos respectivamente..
Para el / posts / (? P
ruta, que apunta a una sola Mensajes recurso, el metodos
La propiedad es la siguiente:
"métodos": ["GET", "POST", "PUT", "PATCH", "DELETE"],
Como puede verse en el código anterior, el / posts / (? P
ruta soporta el OBTENER
, ENVIAR
, PONER
, PARCHE
, y BORRAR
metodos.
Al examinar ambas rutas anteriores, podemos concluir que el / mensajes
La ruta soporta la recuperación y creación de recursos. Y el / posts / (? P
La ruta admite la recuperación de recursos, así como la actualización y eliminación. Aunque apoya el ENVIAR
método, esta ruta no admite la creación de recursos como veremos en un ejemplo a continuación.
Por lo tanto, las rutas que apuntan a un solo recurso no se pueden usar para crear contenido, aunque sí admiten la ENVIAR
método. Esto se debe a que, para estas rutas, la ENVIAR
, PONER
, y PARCHE
Los métodos se utilizan para actualizar el contenido en la API REST de WP..
Para concluir esta sección, resumamos los conceptos que hemos aprendido aquí:
OBTENER
, ENVIAR
, y BORRAR
métodos enviando un OPCIONES
solicitud.ENVIAR
método.Habiendo analizado diferentes rutas, ahora estamos listos para crear contenido usando la API REST de WP, y comenzaremos explorando Mensajes recurso.
Vamos a crear una publicación enviando una solicitud de prueba desde Postman o cualquier otro cliente HTTP. Para hacer esto, encienda su cliente HTTP y envíe un ENVIAR
solicitud a la / mensajes
ruta. Pero antes de eso, recuerde que la creación, eliminación y actualización de recursos requieren autenticación como usuario con edit_posts
derechos. Así que usaremos el método de autenticación básico que aprendimos en la segunda parte de esta serie..
Inicialmente, enviamos un cuerpo de solicitud vacío junto con la solicitud para fines de prueba:
$ POST / wp / v2 / posts
El servidor devolverá un 400 Petición Incorrecta error ya que faltaban los argumentos requeridos en el cuerpo de la solicitud. La siguiente respuesta será devuelta por el servidor:
La respuesta indica que cualquiera de contenido
, título
, o extracto
son necesarios para crear un objeto post. Estos argumentos se pueden enviar a lo largo de la solicitud en el cuerpo de la solicitud de una de las siguientes tres formas:
Es solo una cuestión de elección utilizar cualquiera de estos métodos, y los veremos más de cerca más adelante en este tutorial. Pero ahora vamos a usar el primer método para crear una publicación..
Para enviar argumentos como un objeto JSON en Postman, cambie a Cuerpo pestaña y seleccione la crudo boton de radio. Luego, desde el menú desplegable a la derecha, seleccione la JSON (application / json) opción. En el área de texto a continuación, puede agregar el cuerpo JSON.
Actualmente, este cuerpo JSON posee una sola propiedad para el título
del post.
Enviar la solicitud haciendo clic en el Enviar botón. Si todo va bien, el servidor devolverá un 201 - Creado estado con el objeto de publicación recién creado como la respuesta.
El estado predeterminado de esta publicación recién creada es borrador
. Podemos actualizar el estado
, así como algunas otras propiedades, enviando otra ENVIAR
, PONER
, o PARCHE
solicitud. La identificación del post devuelto en mi caso es 232
, así que enviaré una solicitud al siguiente punto final:
$ POST / wp / v2 / posts / 232
El cuerpo de la solicitud para actualizar el estado
y el contenido
La propiedad se ve así:
"status": "publish", "content": "Este es el contenido de la publicación"
Después de enviar la solicitud, el servidor devolverá un 200 - ok estado, lo que significa que la publicación se ha actualizado con éxito.
En el ejemplo anterior, encontramos los siguientes tres argumentos para crear una publicación:
título
estado
contenido
La lista completa de argumentos admitidos para crear una publicación se puede recuperar con un simple OPCIONES
solicitud de la siguiente manera:
$ OPCIONES / wp / v2 / posts
Entonces podemos comprobar el args
propiedad en el ENVIAR
matriz de métodos.
Ahora que hemos aprendido cómo podemos crear y actualizar una publicación, echemos un vistazo a algunos recursos más con los que podemos trabajar..
Actualización: el trabajo con la meta de publicación y la página en WP REST API ahora requiere un complemento complementario disponible en GitHub por el equipo de WP REST API.
Post meta puede ser creado enviando un ENVIAR
Solicitud a la siguiente ruta:
/ wp / v2 / posts / (? P[\ d] +) / meta
Dónde (?PAG
es el ID de la publicación principal. Usaré el ID de la publicación que creamos en la sección anterior, que es 232
.
De manera similar a cómo enviamos un cuerpo de solicitud para crear un objeto de publicación, se puede enviar un objeto JSON que comprende dos propiedades para crear un meta de publicación. Estas dos propiedades son llave
y valor
.
"clave": "nombre", "valor": "Bilal"
Los valores de la llave
y valor
propiedades son nombre
y Bilal
respectivamente.
Envíe la solicitud y el servidor le devolverá un 201 - Creado Código de estado, que muestra que el meta de la publicación se ha creado correctamente. El meta objeto recién creado también se devolverá en la respuesta:
Tenga en cuenta que en el momento de escribir este tutorial, la API REST de WP no admite valores enteros para crear meta de publicación. Si intentamos enviar un valor entero en el objeto JSON para crear meta de publicación, un 400 Petición Incorrecta El código de estado será devuelto por el servidor..
"clave": "valor", "valor": 12345
Tenga en cuenta las comillas que faltan alrededor del valor 12345
. La respuesta devuelta será como la siguiente:
Por lo tanto, todo lo que envíe a lo largo de la solicitud para crear el meta de la publicación debe estar en formato de cadena.
Hasta ahora, en este tutorial, hemos estado utilizando el formato JSON en el cuerpo de la solicitud para crear y actualizar recursos. Echemos un vistazo a todas las opciones que proporciona la API REST de WP para crear y actualizar datos..
La forma más fácil de enviar datos a lo largo de la solicitud es enviarlos como parámetros de URL. Considera lo siguiente ENVIAR
Solicitud para crear una publicación:
$ POST / wp / v2 / posts? Title = el + título y contenido = este + es + el + contenido
La solicitud anterior envía dos parámetros al servidor para el título
y el contenido
del post.
Del mismo modo, para crear meta de publicación para una publicación con un ID de 232
, usamos lo siguiente ENVIAR
solicitud:
$ POST / wp / v2 / posts / 232 / meta? Key = nombre y valor = Bilal
La solicitud anterior creará el siguiente meta objeto:
Este método es más adecuado cuando los parámetros son cadenas cortas, como en el ejemplo anterior. Pero a medida que aumenta la cantidad de parámetros y la longitud de sus valores, es difícil administrarlos como parámetros de URL..
Usando este método, tomamos los argumentos como un par clave / valor en un objeto JSON para pasarlos a lo largo de la solicitud. Hasta ahora, hemos estado utilizando Postman para enviar solicitudes al servidor. Ahora veremos cómo podemos implementar este método utilizando HTML y jQuery..
Considere la siguiente forma simple que consta de tres campos para el título
, estado
, y el contenido
:
Cuando se envía el formulario anterior, se ejecuta el siguiente código JavaScript (jQuery):
var postForm = $ ('# post-form'); var jsonData = function (form) var arrData = form.serializeArray (), objData = ; $ .each (arrData, function (index, elem) objData [elem.name] = elem.value;); devolver JSON.stringify (objData); ; postForm.on ('submit', function (e) e.preventDefault (); $ .ajax (url: 'http: // your-dev-server / wp-json / wp / v2 / posts', método: 'POST', datos: jsonData (postForm), crossDomain: true, contentType: 'application / json', beforeSend: function (xhr) xhr.setRequestHeader ('Autorización', 'Nombre de usuario básico: contraseña');, éxito: función (datos) console.log (datos);, error: función (error) console.log (error);););
Al enviar el formulario anterior, enviamos una solicitud AJAX al / wp / v2 / posts
ruta. los jsonData ()
El método acepta una instancia jQuery del formulario HTML y convierte sus datos al formato JSON. Estos datos JSON se utilizan entonces en el datos
propiedad de la $ .ajax ()
método. Adicionalmente, configuramos el tipo de contenido a aplicación / json
usando el tipo de contenido
propiedad.
Antes de enviar la solicitud, configuramos el encabezado para incluir el Autorización
Encabezado para utilizar el método de autenticación básico. Ya hemos aprendido a configurar y utilizar el método de autenticación básico en la segunda parte de esta serie..
Finalmente, la solicitud se envía al / wp / v2 / posts
Ruta, y se crea una nueva entrada. El servidor devuelve este objeto de publicación recién creado como respuesta y simplemente lo iniciamos en la consola dentro de éxito()
método.
El ejemplo anterior demuestra el uso del formato JSON para enviar datos a lo largo de la solicitud. La fuente de este objeto JSON puede ser cualquier cosa además de un formulario HTML, dependiendo de la arquitectura de su aplicación.
Tenga en cuenta que para que el código anterior funcione correctamente, es posible que deba configurar Acceso-Control-Permitir encabezados
campo de cabecera para incluir el Autorización
y Tipo de contenido
valores. Esto se puede hacer agregando el siguiente código en su WordPress .htaccess expediente:
Conjunto de encabezado Acceso-Control-Permitir encabezados "Tipo de contenido, Autorización"
Veamos ahora el envío de datos a través de formularios HTML..
La última forma de enviar datos a lo largo de la solicitud es mediante el uso de formularios HTML. Estas formas deben contener campos con el nombre
atributo. los nombre
atributo sirve como un nombre de argumento como título
, estado
, contenido
, Los valores de estos campos sirven como el valor de estos argumentos..
Podemos usar el mismo formulario HTML creado en el ejemplo anterior y luego usar el siguiente código para crear una nueva publicación:
var postForm = $ ('# post-form'); postForm.on ('submit', function (e) e.preventDefault (); $ .ajax (url: 'http: // your-dev-server / wp-json / wp / v2 / posts', método: 'POST', data: postForm.serialize (), crossDomain: true, beforeSend: function (xhr) xhr.setRequestHeader ('Authorization', 'Basic username: password');, success: function (data) console. Dato de registro ); ); );
El código anterior es el mismo que el del ejemplo anterior, excepto que eliminamos el jsonData ()
Método y ahora estamos enviando los datos del formulario en formato de cadena utilizando jQuery publicar por fascículos()
método. El código jQuery anterior utiliza el valor predeterminado aplicación / x-www-form-urlencoded
tipo de contenido que envía los datos en forma de una cadena gigante con argumentos separados por el Y
firmar y sus valores asignados utilizando el =
firmar. Esto se parece en algo al envío de datos como parámetros de URL, excepto que no expone datos. Esta es una forma eficiente de enviar datos si los datos contienen solo caracteres alfanuméricos.
Para enviar datos binarios (no alfanuméricos), utilizamos el multipart / form-data
tipo de contenido. Este método puede usarse si necesitamos cargar imágenes u otros archivos usando la API REST de WP.
Para enviar datos de formulario en Postman, puede cambiar a Cuerpo pestaña y luego usar cualquiera de los datos de formulario o x-www-form-urlencoded opción.
Los argumentos se pueden definir en pares clave / valor para enviar a lo largo de la solicitud.
Se puede encontrar información detallada sobre los diferentes tipos de formularios en las especificaciones de W3C.
multipart / form-data
Tipo de contenidoAhora que hemos visto el x-www-form-urlencoded
tipo de formulario, que envía datos en forma de cadena, comencemos a explorar un tipo de codificación de formulario más avanzado, es decir,. multipart / form-data
.
los multipart / form-data
El tipo de contenido se usa cuando se trata de datos binarios y, por lo tanto, se puede usar para cargar imágenes u otros tipos de archivos en el servidor.
En el siguiente ejemplo, usamos un formulario HTML simple que consiste en un entrada [tipo = ”archivo”]
y un poco de jQuery para cargar imágenes al servidor usando el / wp / v2 / media
ruta.
Considere el siguiente formulario HTML:
El siguiente JavaScript se ejecutará cuando se envíe el formulario anterior:
var imageForm = $ ('# image-form'), fileInput = $ ('# file'), formData = new FormData (); imageForm.on ('submit', function (e) e.preventDefault (); formData.append ('file', fileInput [0] .files [0]); $ .ajax (url: 'http: // your-dev-server / wp-json / wp / v2 / media ', método:' POST ', datos: formData, crossDomain: true, contentType: false, processData: false, beforeSend: function (xhr) xhr.setRequestHeader ( 'Autorización', 'Nombre de usuario básico: contraseña');, éxito: función (datos) console.log (datos);, error: función (error) console.log (error););) ;
Aquí primero obtenemos una instancia jQuery del formulario y su campo de entrada. Luego inicializamos un nuevo FormData
objeto. los FormData
La interfaz proporciona una forma de construir un conjunto de campos de formulario con pares clave / valor y utiliza el mismo formato que el multipart / form-data
tipo de codificación de formulario.
Cuando se envía el formulario, evitamos su presentación llamando a la .preventDefault ()
Método en el objeto de evento. Luego agregamos un nuevo campo a la formData
instancia utilizando el .adjuntar()
método. los .adjuntar()
método acepta dos argumentos para la nombre
y el valor
en el campo. La API REST de WP aplica la nombre
atributo del campo de entrada de archivo para ser expediente
. Por eso planteamos el primer argumento: el nombre
-ser expediente
, y para el segundo argumento pasamos un objeto blob de archivo refiriéndonos al elemento de entrada.
Por defecto, los datos pasados a la datos
propiedad de la jQuery.ajax ()
El método se procesa en una cadena de consulta. Ya que estamos cargando archivos de imágenes aquí, no queremos que eso suceda, y para eso establecemos la procesar datos
propiedad a falso
. También establecemos el tipo de contenido
propiedad a falso
para prevenir aplicación / x-www-form-urlencoded
siendo enviado como el tipo de contenido predeterminado al servidor.
Y por último, configuramos el Autorización
encabezado para autenticarnos como usuario con edit_posts
privilegios.
Asegúrese de ejecutar el script anterior desde un servidor. Si todo va bien y el archivo se carga, el servidor devolverá el objeto multimedia recién creado..
Esta imagen se puede configurar como una imagen destacada para una publicación..
Habiendo examinado de cerca las formas de crear y actualizar recursos usando la API de REST de WP, veamos cómo podemos eliminarlos..
Eliminar datos con la API REST de WP es tan simple como enviar un BORRAR
solicitud a un recurso particular.
Si necesitamos eliminar una publicación que tenga un ID de 10
, enviamos lo siguiente BORRAR
solicitud:
$ BORRAR / wp / v2 / posts / 10
Esto moverá la publicación a la papelera pero no la eliminará permanentemente. Para eliminar permanentemente una publicación, usamos el fuerza
argumento:
$ DELETE / wp / v2 / posts / 10? Force = true
Tenga en cuenta que el fuerza
se requiere un argumento cuando se elimina un recurso que no admite la eliminación de datos. Ejemplos de tales recursos son post meta y media..
Dicho esto, ahora concluimos la parte actual de la serie..
En este largo tutorial, analizamos la creación, actualización y eliminación de diferentes tipos de recursos mediante la API REST de WP. Aprendimos sobre diferentes formas de enviar datos a lo largo de la solicitud, incluido el envío de datos como parámetros de URL, en formato JSON y mediante formularios. Al final del tutorial, aprendimos cómo eliminar recursos mediante el envío de un BORRAR
solicitud.
En la próxima y última entrega de la serie, conoceremos la estructura interna de la API REST de WP y sus clases. También aprenderemos a extender la API para modificar las respuestas del servidor. Nos vemos en la siguiente parte de la serie, estad atentos ...