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 l’utilise toujours sur de nouveaux projets, mais il est difficile d’ajouter le support de l’API rest à mon projet principal, le formulaire Caldera. Le développement moderne de WordPress nécessite l’écriture de code PHP qui vous 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 qu’il était important de suivre cette philosophie. Les paramètres de la page admin ont changé et le contenu est affiché à l’avant. 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) d’exécuter facilement la même fonctionnalité à travers différentes interfaces. Par exemple, woocommerce a récemment ajouté une classe CRUD au plug – in principal. L’exé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 c’est énorme, mais il y a beaucoup d’add – ons woocommerce, et même plus de code spécifique au site qui n’utilise pas ces classes CRUD. Cela posera d’énormes défis de compatibilité aux versions précédentes, mais cela en vaudra la peine pour l’avenir de leur plateforme.
J’aimerais partager avec vous certains des défis que j’ai rencontrés pour ajouter l’API rest et normaliser l’API PHP sous – jacente dans le plug – in Caldera forms. J’espère que cela vous donnera l’occasion de réfléchir à ces questions lors du développement de nouveaux plug – ins et vous aidera,
Si vous êtes dans une situation similaire. Avant de discuter de l’API rest, l’API rest des formulaires Caldera a en fait été ajoutée au plug – in à la fin de 2016, mais j’a I fait un long travail de base. La première chose que j’a i faite a été d’introduire une API PHP pour la configuration du module. Comme la configuration du module est stockée dans la table options, l’appel à get _ option () est techniquement suffisant pour obtenir la configuration du module. Bien sûr, cela n’est 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, vous 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 d’api rest pour la configuration des modules. De plus, si nous décidons de changer l’emplacement de stockage d’un module ou d’introduire une classe d’objets 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, l’API de repos des formulaires Caldera doit interagir avec les entrées du module. Cela nécessite un processus similaire. Au lieu de lire et d’écrire les données d’entrée en utilisant wpdb comme l’exige le tableau personnalisé, j’a i écrit une abstraction CRUD d’entrée qui peut ensuite être enveloppée dans l’API rest.
Construire le Code de l’API rest je ne veux pas détailler comment j’ai construit l’API rest des formulaires Caldera. Je ne me souviens pas si l’exemple de code que j’ai écrit pour Torque sur la création d’api rest en utilisant des méthodes orientées objet était basé sur la structure de l’API 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 – > add _ entry to Response ($entry, array ());
$Data = $data [$request [‘entry _ id’]]];
Retourner Caldera _ forms API Response Factory:: ENTRY DATA ($Data, 1, 1);
}
Cette fonction charge les entrées du module en utilisant l’API PHP standard du module. Si le formulaire n’est pas trouvé, une erreur est retournée en utilisant l’usine de réponse. Si le formulaire existe, la configuration du formulaire est transmise à l’objet standard de l’entrée du formulaire avec l’id de l’entrée dans la demande. Si cette entrée n’est pas trouvée, une erreur est retournée en utilisant l’usine de réponse. Si 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 d’autres callbacks). Ensuite, utilisez l’usine 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 d’interaction avec la base de données se produit dans d’autres classes. Ce type de contrôleur API rest n’est 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 vous 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 n’est pas seulement parce que votre plug – in et votre application ont besoin d’api rest. C’est parce que l’approche que j’a i préconisée avec beaucoup de gens a conduit à un code propre et gérable.
Ajouter le support WP – CLI ou