J'ai un site WordPress.org qui prend la saisie de l'utilisateur, recherche une base de données personnalisée et affiche les résultats de la requête. J'ai ce travail en utilisant la classe wpdb . Maintenant, j'essaie de faire fonctionner cela pour une application Android.
D'après ce que je comprends, la construction d'un serveur RESTful est la «meilleure pratique» actuelle pour ce genre de chose. J'ai cherché des plugins qui pourraient m'aider à le faire, et je suis tombé sur:
json-rest-api - Il me semble que cela expose uniquement les fonctionnalités principales de WordPress (c'est-à-dire les publications, les pages, les utilisateurs, etc.) et je ne vois pas comment obtenir cela pour exécuter des requêtes personnalisées sur des tables non par défaut.
Ce billet de blog dit que wp mvc fait exactement ce que je veux, sauf qu'il n'a pas été mis à jour depuis plus de 2 ans, ce qui exclut un peu cela.
Il y a aussi Jetpack mais d'après ce que j'ai vu, json-rest-api est la version mise à jour de cela et il semble ne donner que des fonctionnalités de base.
Existe-t-il un moyen de faire fonctionner l'un de ces plugins pour des points de terminaison personnalisés? Ou y a-t-il d'autres plugins que je n'ai pas encore trouvés?
Si je n'utilise pas de plugin, je pense que je devrais rouler le mien. Je peux le faire à partir de zéro (en utilisant wpdb
, msqli
ou quelque chose), ou avec l'aide d'une API telle que Restler .
Si je lance le mien, dois-je créer un modèle dans mon thème, y faire les choses REST et affecter ce thème à une page dans le tableau de bord? Ou serait-il préférable d'avoir un autre serveur fonctionnant séparément de WordPress pour cela?
Pour autant que je puisse voir, ce sont mes seules options. Je voudrais savoir quelles sont les meilleures pratiques recommandées pour ce genre de chose. J'ai du mal à croire que personne d'autre ne l'a fait. Y a-t-il des options que j'ai ignorées?
Réponses:
TL; DR
Oui, WordPress peut certainement servir de backend pour une application mobile. Oui, une page peut agir en tant que point de terminaison / interface de repos. Non, un modèle de thème n'est pas le bon territoire pour la logique. Écrivez votre propre plugin.
Pointeurs
Pour ma part, j'ai. Plus d'une fois. Et je suis presque certain que je ne suis pas seul. «Personne n'a beaucoup blogué à ce sujet» est probablement la notion la plus correcte.
Je ne connais pas "Restler" et c'est de toute façon hors de portée sur cette pile.
En ce qui concerne "l'utilisation de wpdb, msqli ou quelque chose": vous utiliseriez certainement
wpdb
pour sauvegarder (recevoir) des données dans la base de données, mais cela n'est pas pertinent pour la logique du point final.Un modèle de thème n'est pas ce que vous devriez examiner. Les thèmes sont destinés à une présentation visuelle. Un point de terminaison REST n'a pas du tout besoin d'une apparence visuelle.
Insérez le point de terminaison dans la page que vous souhaitez utiliser via un shortcode .
Demandez au gestionnaire de shortcode / rappel d'écouter HTTP POST ou GET et d'appeler la sauvegarde des données ou d'autres méthodes secondaires en conséquence.
Est-il judicieux d'utiliser WordPress comme point de terminaison / backend?
Ça dépend.
Si tout ce dont vous avez besoin est un point de terminaison pour enregistrer les données: Non. Le chargement du noyau entier juste pour enregistrer quelques lignes de code en utilisant
wpdb
ne vaut pas la peine.Si vous avez besoin d'un backend auquel vous pouvez vous connecter via un navigateur Web, qui peut afficher des données tabulaires, offrir des moyens de modifier ces données, peut-être même avec plusieurs niveaux d'accès / rôles et droits d'utilisateur, alors oui, cela a du sens.
la source
wpdb
ne vaut pas la peine".Le plugin API Endpoints devrait couvrir tous vos besoins, surtout si vous êtes familier avec MySQL. Vous feriez les étapes suivantes:
Créez un nouveau modèle Twig, entrez votre requête MysQL pour récupérer les données de votre site WordPress et utilisez la syntaxe Twig pour sortir les données dans n'importe quel format. Par exemple, JSON.
Créez un nouveau point de terminaison API, donnez-lui un nom et configurez-le pour utiliser le modèle Twig que vous avez créé à l'étape 1.
Une fois cela fait, répétez les étapes 1 et 2 pour chaque point de terminaison que vous souhaitez créer. Les points de terminaison API utilisent le système d'authentification WordPress standard, il serait donc préférable de créer un utilisateur distinct dans votre WordPress et d'utiliser son nom d'utilisateur / mot de passe pour accéder à vos points de terminaison api.
la source
La nouvelle version de l'API WP REST est en version bêta, mais possède une assez bonne documentation sur la façon d'enregistrer des points de terminaison REST personnalisés. Il y a aussi un très petit texte expliquant comment cela pourrait être fait dans la version 1, que je vais essayer car la bêta n'est pas garantie d'être ou de rester stable. Je suppose que vous pouvez ensuite utiliser wpdb à partir des méthodes que vous enregistrez. En fait, j'utilise juste des trucs ACF et je les pré-dispose en objets dans mon php pour créer une belle page d'index multi-propriétés consultable / triable avec angularJS.
Comparaison entre WWP REST API 1 et 2 à partir de leurs documents
la source