Superar desafíos Agregar API REST WordPress a un proyecto heredado

No es ningún secreto que soy fanático de la API REST WordPress. Lo uso todo el tiempo en nuevos proyectos, pero agregar el soporte de descanso a mi proyecto principal, los formularios de caldera, fue difícil. El desarrollo de WordPress moderno requiere la escritura de un código PHP que permita las mismas acciones en respuesta a una solicitud HTTP de administración/front-end, una solicitud API o solicitud WP-CLI, utilizando la misma API PHP interna. En el pasado, no creo que esta filosofía seguida haya importado demasiado. La configuración se modificó en las páginas de administración y el contenido se mostró en el front-end. Esto llevó a muchas personas que escribieron complementos muy exitosos que estaban estrechamente relacionados con la solicitud HTTP y el objeto WP_QUEY global suponiendo que la demanda provenía de un navegador que hizo clic en las cosas en WordPress.
Con una sola API PHP para todas las operaciones sin procesar, al menos se ha convertido en el nuevo estándar. Conduce a un mejor código, más fácil de administrar y permite API REST, WP -CLI y lo que sea que siga – puede GraphQL – Realizar fácilmente la misma función, a través de diferentes interfaces. Por ejemplo, WooCommerce recientemente agregó clases RAW al complemento base. Si todo se ejecuta a través de esta API única, les permitirá modificar su estructura de base de datos y hacer que el código sea más comprobable. Pero, esto es enorme, pero hay muchos suplementos de WooCommerce e incluso más códigos específicos para el sitio que no usan esas clases en bruto. Esto presentará un desafío masivo de compatibilidad inversa, pero vale la pena el futuro de su plataforma.
Me gustaría compartir algunos de los desafíos que he enfrentado con la adición de un descanso y estandarización de las API PHP subyacentes en mis formularios de caldera de complemento. Esperamos que esto lo ayude a pensar en estas cosas cuando trabaje en un nuevo complemento y lo ayude si se encuentra en una situación similar. Antes de llegar a la API REST, la API REST de Forms de Caldera es algo que realmente se agregó al complemento a fines de 2016, pero senté los cimientos durante mucho tiempo. Lo primero que hice fue introducir una API PHP para la configuración de formularios. Debido a que las configuraciones de formularios se almacenan en la tabla de opciones, una llamada a get_option () es técnicamente suficiente para obtener una configuración de formulario. Por supuesto, esto no era obvio para otros desarrolladores. Agregar una clase PHP llamada caldera_forms_forms con métodos como get_form (), get_forms (), create_form (), save_form () lo hace más visible. Dentro de estos métodos se encuentran los filtros estándar y la memoria de caché de la configuración que siempre debe usarse.
Con esa API en su lugar, pude estandarizar la carga de formularios y estaba preparado para crear un punto final para el resto para las configuraciones de formularios. Además, si todas las llamadas para las configuraciones de formulación se ejecutan a través de una sola clase, será muy simple cambiar la forma en que se almacenan los formularios si decidimos cambiar la ubicación de los formularios o ingresar a una clase de objetos de objetos. Además de configurar los formularios, la API REST de los formularios de caldera tuvo que interactuar con las entradas de formulario. Esto requirió un proceso similar. En lugar de usar WPDB para leer y escribir datos de entrada, según sea necesario para tablas personalizadas, escribí una abstracción de entrada cruel que luego podría incluirse en un descanso. Estructura de su código API REST. No quiero que ingrese demasiados detalles sobre cómo Estructuré las formas de caldera de descanso API. No recuerdo si el ejemplo de código para el artículo que escribí para el torque sobre el uso de un enfoque orientado a objetos para crear el resto se basa en la estructura del resto de los formularios de caldera o si es el otro lado. Utilicé la mayor herencia de clase como sea posible, esto facilita la adición de nuevos puntos finales, lo que hice para los suplementos y cuando me di cuenta de que necesitaba datos diferentes para nuestro visor de entrada frontal. La otra cosa importante que hice fue crear una clase para cargar la API de REST de puntos finales.
Todas nuestras clases de punto final implementan la interfaz caldera_forms_api_route. Esta interfaz tiene un método, add_routes () que toma un argumento, $ namePace. Este método hace exactamente lo que dice: agrega las rutas definidas por esa clase. También significa que el espacio de nombre de la API se define solo una vez y se transmite en cada ruta. La clase que carga estos puntos finales utiliza la inyección de la adicción al método: pasando, en este caso, las clases de ruta en el aula a través de un método público, en cambio, de inyectar la adicción al constructor: las adicciones que pasan en el objeto cuando están instanciadas. Esto hace que sea más fácil agregar rutas al completar complementos.
Por esta razón, logré instantar la clase que carga la API, para exponer el objeto a la acción para que los suplementos los usen y luego agregar las rutas. Puedes ver el código aquí. De hecho, entregué la infraestructura para la API REST en la versión 1.4.4 de los formularios de caldera, pero no agregué ningún punto final hasta la versión 1.5. Esto permitió que los suplementos agregaran puntos finales antes, lo cual fue muy útil y me ayudó a probar el sistema. Es esencial hacer el resto para el resto para su complemento tan extensible como WordPress debe ser, es esencial para cualquier complemento que tenga suplementos o que pueda tener suplementos o simplemente desee ser fácil de trabajar para otros desarrolladores.

Las llamadas simples y limpias creen que una forma de medir el éxito en la codificación de PHP para WordPress es una devolución de llamada API limpia y simple que utiliza sistemas de complementos estándar. Por ejemplo, aquí está la devolución de llamada para los formularios de caldera API de punto final para obtener una entrada: get_entry ()) {
return caldera_forms_pi_esponse_factory :: error_entry_not_found ();
}
$ data = $ this-> add_entry_to_response ($ entry, array ());
$ data = $ data [$ request [‘entry_id’]];
return caldera_forms_pi_esponse_factory :: entry_data ($ data, 1, 1);
}
Esta función carga el formulario de entrada utilizando la API PHP estándar para formularios. Si no se encuentra el formulario, la fábrica de respuesta se usa para devolver un error. Si el formulario existe, la configuración del formulario se transmite al objeto estándar para las entradas de formulario junto con la ID de entrada. Si no se encuentra esa entrada, la fábrica de respuesta se usa para devolver un error. Si se encuentra la entrada, se utiliza otro método de clase, que se reutiliza en otras llamadas inversas, para preparar la entrada a la respuesta. Luego, la fábrica de respuesta se usa para proporcionar un objeto de respuesta estándar utilizando una clase que extiende wp_rest_esponse.
Toda la lógica interna de la interacción con la base de datos ocurre en otras clases. Esta clase de controlador API REST simplemente debe responder a las solicitudes de API con los datos correctos o el error apropiado, Media MET. REST API-First es más que la API REST cuando comienza un nuevo complemento o aplicación de WordPress, es muy importante pensar en cómo todo será consumido por el resto. Y esto no es solo porque su complemento y aplicación necesitan un descanso. Se debe al hecho de que el enfoque que yo y muchas personas hemos apoyado conducen a un código limpio que se puede mantener. Si una base de código también puede consumirse por dos interfaces, por ejemplo, el administrador de WordPress y una API REST, agregando. El soporte WP-CLI u otra tecnología de intercambio de datos que puede no existir aún debería ser fácil. Para proyectos heredados, esto puede ser un desafío, pero es un desafío que me gusta. Más importante aún, lo ayudará a mantener su complemento o aplicación relevante y mejorar su código.

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *