Surmonter les défis ajouter API de repos wordpress pour les anciens projets

Je suis un fan de l’api WordPress rest et ce n’est plus un secret. Je lrsquoutilise toujours sur de nouveaux projets, mais il est difficile drsquoajouter le support de lrsquoAPI rest à mon projet principal, le formulaire Caldera. Le développement moderne de WordPress nécessite l’écriture de code PHP qui permet d’utiliser la même API PHP interne pour effectuer les mêmes actions sur les requêtes http traditionnelles de gestion frontale, les requêtes API rest, ou les requêtes WP CLI. Dans le passé, je ne pensais pas qursquoil était important de suivre cette philosophie. Les paramètres de la page admin ont changé et le contenu est affiché à lrsquoavant. Cela a conduit de nombreuses personnes à écrire des plug ins très réussis qui sont étroitement liés aux requêtes http entrantes et aux objets de requête wp u globaux, en supposant que la requête provient d’un navigateur qui clique sur un projet dans WordPress.
Fournir une API PHP pour toutes les opérations CRUD est au moins une nouvelle norme. Il peut générer un code meilleur et plus facile à gérer, et permet aux API rest, WP CLI et tout ce qui suit (peut être graphql) drsquoexécuter facilement la même fonctionnalité à travers différentes interfaces. Par exemple, woocommerce a récemment ajouté une classe CRUD au plug in principal. Lrsquoexécution de tout avec cette API leur permettra de modifier la structure de la base de données et de rendre le code plus vérifiable. Mais crsquoest énorme, mais il y a beaucoup drsquoadd ons woocommerce, et même plus de code spécifique au site qui nrsquoutilise pas ces classes CRUD. Cela posera drsquoénormes défis de compatibilité aux versions précédentes, mais cela en vaudra la peine pour lrsquoavenir de leur plateforme.
Jrsquoaimerais partager avec certains des défis que jrsquoai rencontrés pour ajouter lrsquoAPI rest et normaliser lrsquoAPI PHP sous jacente dans le plug in Caldera forms. Jrsquoespère que cela donnera lrsquooccasion de réfléchir à ces questions lors du développement de nouveaux plug ins et aidera,
êtes dans une situation similaire. Avant de discuter de lrsquoAPI rest, lrsquoAPI rest des formulaires Caldera a en fait été ajoutée au plug in à la fin de 2016, mais jrsquoa I fait un long travail de base. La première chose que jrsquoa i faite a été drsquointroduire une API PHP pour la configuration du module. Comme la configuration du module est stockée dans la table options, lrsquoappel à get _ option () est techniquement suffisant pour obtenir la configuration du module. Bien sûr, cela nrsquoest pas évident pour les autres développeurs. Ajoutez une classe PHP appelée Caldera _ forms forms et rendez la plus visible en utilisant des méthodes telles que get forms (), get forms (), create forms (), Save forms (). Dans ces méthodes, devriez toujours utiliser des filtres standard et configurer le cache.
Avec cette API, je peux normaliser le chargement des modules et me préparer à créer des paramètres drsquoapi rest pour la configuration des modules. De plus, si nous décidons de changer lemplacement de stockage drsquoun module ou drsquointroduire une classe drsquoobjets de module, il est facile de changer la façon dont le module est stocké en exécutant tous les appels à la configuration du module en une seule classe. En plus de la configuration du module, lrsquoAPI de repos des formulaires Caldera doit interagir avec les entrées du module. Cela nécessite un processus similaire. Au lieu de lire et drsquoécrire les données drsquoentrée en utilisant wpdb comme lrsquoexige le tableau personnalisé, jrsquoa i écrit une abstraction CRUD drsquoentrée qui peut ensuite être enveloppée dans lrsquoAPI rest.
Construire le Code de lrsquoAPI rest je ne veux pas détailler comment jrsquoai construit lrsquoAPI rest des formulaires Caldera. Je ne me souviens pas si lrsquoexemple de code que jrsquoai écrit pour Torque sur la création drsquoapi rest en utilisant des méthodes orientées objet était basé sur la structure de lrsquoAPI res
Une façon de mesurer le succès de l’encodage PHP WordPress est d’utiliser des callbacks API de repos simples pour les systèmes plug in standards. Par exemple, voici un rappel du paramètre API de repos des formulaires Caldera pour obtenir une entrée: Get _ entry () {
Retourner Caldera _ forms API Response Factory:: Error entry not found ()
}
$Data = $this gt add _ entry to Response ($entry, array ())
$Data = $data [$request [lsquoentry _ idrsquo]]]
Retourner Caldera _ forms API Response Factory:: ENTRY DATA ($Data, 1, 1)
}
Cette fonction charge les entrées du module en utilisant lrsquoAPI PHP standard du module. le formulaire nrsquoest pas trouvé, une erreur est retournée en utilisant lrsquousine de réponse. le formulaire existe, la configuration du formulaire est transmise à lrsquoobjet standard de lrsquoentrée du formulaire avec lrsquoid de lrsquoentrée dans la demande. cette entrée nrsquoest pas trouvée, une erreur est retournée en utilisant lrsquousine de réponse. une entrée est trouvée, une entrée est préparée pour la réponse en utilisant une autre méthode dans la classe (réutilisée dans drsquoautres callbacks). Ensuite, utilisez lrsquousine de réponse pour fournir un objet de réponse standard qui utilise une classe qui étend la réponse WP _ rest U.
Toute logique interne drsquointeraction avec la base de données se produit dans drsquoautres classes. Ce type de contrôleur API rest nrsquoest utilisé que pour répondre aux demandes API avec les données correctes ou les erreurs appropriées, et la tâche est terminée. L’api rest First n’est pas seulement l’api rest. Lorsque lancez un nouveau plug in ou une application WordPress, il est important de réfléchir à la façon dont l’api rest utilisera tout. Ce nrsquoest pas seulement parce que votre plug in et votre application ont besoin drsquoapi rest. Crsquoest parce que lrsquoapproche que jrsquoa i préconisée avec beaucoup de gens a conduit à un code propre et gérable.
Ajouter le support WP CLI ou

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

ContactPress Supported By WordPress Plugins