El uso de admin-Ajax como el punto final al proceso de componente frontal peticiones AJAX se ha convertido en un estándar, ya que funciona, y es visto como "el camino de WordPress." Pero no es particularmente performante. Además, se requiere la creación de un sistema para la validación, la desinfección y control de nonce para cada solicitud.
Por supuesto, muchos desarrolladores, incluido yo mismo, crean sistemas para abstraer el uso de admin-ajax, o una API crean personalizados para AJAX front-end. Eso es una cosa elegante a hacer, pero no contribuye al mantenimiento del código ya que cada uno tiene su propia manera de hacerlo y no existe un estándar real.
La API REST puede cambiar eso. Se define "El Camino de WordPress" para la creación de APIs personalizados, que pueden ser utilizados para responder a los front-end peticiones AJAX. La API REST proporciona una arquitectura fantástica para la desinfección, la validación y autenticación de las solicitudes.
En este artículo, voy a mostrar cómo crear un formulario para el usuario que permitirá a los usuarios con el papel colaborador presentar mensajes. Un gran caso del uso de este tipo de sistema es permitir a los contribuyentes a presentar borradores o tonos historia desde el front-end.
El ejemplo que muestro sistema se basa en las capacidades existentes de WordPress y confía en él para evitar la creación no autorizada de mensajes publicados - algo que es un gran riesgo, cuando se envuelve una petición AJAX tradicional alrededor wp_insert_post ().
Este ejemplo práctico también está diseñado para mostrar que, en general, cómo se puede utilizar la API REST para reemplazar a admin-Ajax en el front-end. Por el ejemplo que he elegido, podemos utilizar un defecto del poste de punto final "wp-JSON / wp / v2 / mensajes" en lugar de crear un punto final personalizado. Eso es impresionante, y significa que vamos a estar escribiendo casi ningún código del lado del servidor.
En algunos casos será necesario añadir puntos finales personalizados a la API REST para su AJAX. Cuando lo que se necesita, recomiendo la lectura a través.
También, por favor tenga en cuenta que este artículo se supone que está utilizando la versión 2 de la API. Está disponible, y es de esperar se fusionará con WordPress núcleo pronto.
Si desea ver el código fuente completo para los ejemplos en este artículo, se puede. Los he empaquetado en un pequeño plugin:
En el ejemplo que le muestro en este artículo, JSON es un formato perfectamente aceptable para obtener los datos de nuevo. En muchos casos, cuando usted está buscando para reemplazar a admin-ajax con la API REST, es posible que prefiera para obtener texto sin formato, HTML, o incluso las imágenes de vuelta de la API.
Mientras que la API REST está diseñado para devolver JSON, también es altamente extensible. El filtro "rest_pre_serve_request" proporciona un punto de entrada para secuestrar una solicitud y responder con los datos que desee. Eso podría ser una respuesta, texto, XML, una imagen previamente almacenada en caché - lo que sea. Si ese filtro se establece en nada, además nula, a continuación, se servirá de su valor, en lugar de continuar con el resto (nunca mejor dicho) del proceso de la API REST.
Honestamente, no hay nada particularmente emocionante de lo que estoy a punto de mostrar. Es algo muy estándar. Ese es exactamente el punto que estoy tratando de llegar al otro lado. El hecho de que tengo que seguir esta sección sobre cómo hacer que funcione, con un desglose de lo que no tenía que hacer, habla de lo que realmente es impresionante esta nueva API REST.
Para realizar este trabajo, he creado un formulario con tres campos: título, extracto y de contenido. Salí de contenido como un campo no requiere -como extracto que permite que se utiliza para crear "lanza" para los puestos. Se puede adaptar la forma para adaptarse a sus necesidades.
Escribí una función simple, enganchado a the_content para crear mi forma de marcado cuando una página con la babosa "submit-post" estaba siendo emitida. Se puede escribir su formulario directamente en un archivo de plantilla en el tema o de niños del tema si se quería.
Además, he optado por única forma de salida para los usuarios registrados, que tenían la capacidad de editar mensajes - es decir, aquellos con el rol de colaborador o superior. Esto no es 100% necesario ya que la forma no funcionaría para los usuarios registrados a cabo, o suscriptores. Pero, no hay necesidad de mostrar una forma no funcional. En lugar de ello he creado un enlace a wp-login para los no-usuarios registrados.
Aquí está el gancho y la función que crea el marcado:
add_filter ( 'the_content', function ($ contenido) {
Previous Post Next Post
.