Au cours des 14 dernières années, WordPress est devenu un système de gestion de contenu entièrement flexible. Cependant, à mesure que nous grandissons, nous devons ajouter des paramètres non standard à notre flux de travail. Ces paramètres doivent être créés à partir de zéro, car ils ne sont pas couverts par la hiérarchie des modèles de thème, WP admin ou les annotations par défaut de l’api de repos WordPress. Dans je décrirai les stratégies communes pour résoudre ces situations, comme lrsquoajout de règles de réécriture personnalisées, la personnalisation des paramètres de lrsquoAPI de repos pour comprendre la diversité des méthodes existantes. Ensuite, je vais étudier comment utiliser l’opération parse _ request pour me connecter au chargement précoce de WordPress et utiliser votre propre système, et comment utiliser la base http de Symfony comme exemple pratique de la façon de moderniser les applications basées sur WordPress.
Lorsque nous devons acheminer une demande très spécifique vers un code spécifique pour la traiter, nous pouvons voir la solution traditionnelle pour ajouter des paramètres personnalisés. Cela peut être utilisé pour traiter les champs de configuration dans lrsquoAdministrateur, répondre au webhook, afficher lrsquoécran drsquointerface utilisateur, ou traiter les demandes de génération de fichiers, comme CSV, téléchargement. Dans le passé, nous avions quelques options principales, dont je voudrais parler brièvement, une à la fois: sur le crochet initial, comme init, vérifiez certaines conditions pour Global super $_ get ou $Post, et si passez, exécutez notre Code. Utilisez admin Ajax en utilisant des règles de réécriture personnalisées. Il est facile pour PHP drsquoajouter un paramètre API de repos personnalisé qui se combine avec un init ou un crochet initial. Ce nrsquoest pas une bonne solution, mais ça marche. Ce nrsquoest pas bon parce qursquoil ne srsquoagit pas drsquoune norme, chaque mise en oeuvre est ponctuelle et fondée sur le respect par tous des conventions établies pour la mise en oeuvre.
Gérer lrsquoutilisation drsquoAjax. PHP est devenu la norme
Convertit les tests http entrants en tests unitaires, commandes WP CLI, ou un autre code PHP.
C’est ainsi que l’api WordPress rest a été construite. Nous avons un objet de requête WP _ rest que nous utilisons dans notre classe de rappel pour traiter la requête, puis nous retournons un objet de réponse WP rest response. Cette architecture encourage et soutient le Code orienté objet testable d’une manière que d’autres parties de wordpress ne peuvent pas faire. Par conséquent, si le contexte est correct, je recommande d’utiliser les paramètres personnalisés de l’api WordPress rest. Jrsquoai beaucoup écrit à ce sujet, mais toutes les demandes et réponses ne sont pas ou ne devraient pas être reposantes. Lors de lrsquoutilisation des composants http Foundation, jrsquoai manqué lrsquoobjet de requête wp u rest u alors que je travaillais avec des situations où lrsquoutilisation de paramètres drsquoAPI de repos personnalisés était inutile. Pire encore, jrsquoai lrsquohabitude drsquoutiliser ce type drsquoobjet pour travailler avec drsquoautres cadres PHP.
Pour les projets WordPress sur lesquels je travaille, j’ai des types de demandes qui nécessitent un traitement personnalisé et qui ne correspondent pas aux paramètres de l’api rest. La requête entrante nrsquoest pas json et je dois répondre en HTML ou rediriger. Irrité par mon choix, jrsquoai décidé drsquoessayer drsquoutiliser le composant Symfony http Foundation pour représenter les requêtes http entrantes. Ce composant sert de base à la plupart des cadres PHP pour interagir avec les requêtes http. Il fournit une abstraction orientée objet, est facile à utiliser et peut être simulé pour les tests.
Dans le reste de je vais montrer comment l’utiliser dans le contexte WordPress. Pour certains paramètres, pourriez avoir tendance à les appeler suringénierie. Mais j’espère que verrez ces avantages, et grâce à cette expérience d’apprentissage, commencerez à apprendre comment utiliser les outils PHP modernes dans les sites WordPress. Installation et sélection
Vous pouvez installer http Foundation avec composer en utilisant la commande suivante: composer a besoin que le développement de Symfony http Foundation Symfony soit synchronisé avec le développement PHP, de sorte que la dernière version de http Foundation nécessite maintenant PHP 7.1, qui n’est pas commun dans le monde WordPress. Pour le développement personnalisé, devriez utiliser PHP 7, mais si publiez un plug in ou un thème, devez prendre en charge les versions précédentes de PHP. Cela est particulièrement vrai si souhaitez déployer sur WordPress. Org, le Code pour la syntaxe php7 nrsquoest pas actuellement autorisé dans le répertoire plug in.
Vous pouvez toujours utiliser les anciennes versions pour prendre en charge les versions précédentes de PHP. Dans le fichier composer. Json, spécifiez la version 3.2.8 des composants pris en charge par PHP 5.6 ou la version 2.8.20 de PHP 5.3. Dans le rappel du chemin de l’api WordPress rest, nous obtenons un objet de requête WP _ rest et créons un objet de réponse WP rest response. On srsquoattend à ce que ces fonctions de rappel fonctionnent avec drsquoautres classes qui traitent de la logique opérationnelle réelle de lrsquoapplication. Cela nous permet drsquoavoir un système similaire à MVC. Nous obtenons un système où la « logique drsquoentreprise » est un type générique de la classe CRUD, ou un autre système que nous voulons appeler par une demande drsquoapi rest. Lrsquoavantage de cette architecture est que nous pouvons avoir plus de points drsquoentrée.
Il est bon de découpler CRUD et drsquoautres logiques drsquoaffaires, mais nous avons encore besoin drsquoun moyen de traiter les demandes qui ne proviennent pas de la ligne de commande, qui ne sont pas reposantes ou qui ne sont pas significatives dans le sujet. Et une fois que nous avons commencé à résoudre ce problème, le sujet est devenu facultatif. Par exemple, que faire si nous voulons un paramètre ou un ensemble de paramètres pour créer du HTML pour une application JavaScript d’une page prise en charge par l’api WordPress rest? Crsquoest pourquoi
AG = nouveau paquet de paramètres (préparé)
Créer une demande à partir de Global
$request = Request:: createfromglobals ()
Modifier notre paquet get par défaut
$request gt Query = getbag Bien sûr, ne voulez lrsquoexécuter qursquoen réponse à une demande spécifique. Avant de construire cette logique conditionnelle, nous devons discuter où exécuter ce code. Trouvez un point drsquoentrée et je montre le début du routeur. Je ne vais pas si loin, et je vais montrer comment vérifier certaines conditions pour les requêtes HTML entrantes, dans ce cas, injecter lrsquoobjet de requête HTTP dans une autre classe, puis répondre avec lrsquoobjet de réponse. Je pense que ce système est très utile pour répondre à des demandes très spécifiques. Pour un type de site très spécifique, pouvez lrsquoutiliser au lieu drsquoune dérogation wp u frontale. À ce stade, je me demande pourquoi devriez utiliser WordPress comme Front End plutôt que les différents systèmes connectés à wordpress pour le traitement de contenu via l’api rest. Lrsquoopération parse _ request est un bon choix pour créer des paramètres personnalisés. À ce stade du processus de démarrage WordPress, nous avons des objets WP, et il n’y en a pas beaucoup d’autres. Par exemple, la requête wp u nrsquoest pas initialisée et aucune requête nrsquoest exécutée. Cela nous permet de déterminer si un paramètre personnalisé est nécessaire et de répondre ou de laisser WordPress continuer son comportement par défaut. La classe WP nous fournit la variable de requête courante, et nous pouvons utiliser une variable appelée nom de page: lt?php
usa SymfonyComponentHttpFoundationRequest
$request = Request::createFromGlobals() Ora possiamo accedere a una variabile $_GET usando il metodo get(), in questo modo: Requête _ Vars [lsquopage namersquo]) {
$pagename = $WP gt Query _ Vars [lsquopagenamersquo]
Autres {
Reviens!
}
(dans _ array ($pageName
« accès aux applications»,
« après la connexion de lrsquoapplication»
) {
Gérer nos demandes personnalisées ici
}
Pas de correspondance? Très bien, faites de WordPress WordPress WordPress
Voici un exemple drsquoun site Web sur lequel je travaille, où jrsquoa i créé une page personnalisée
NSE (ESC _ URL raw ($URL))
}
}
Classe apphtmlcontroller Extended Controller {
Hériter du document
Getresponse () fonctions publiques: Réponse
{Y}
$HTML = include _ once lsquo Path to html. Html lsquo
Renvoie une nouvelle réponse ($HTML, 200
« type de contenu» = gt « texte html»
]
}
}
Classe image Extended Controller {
* *
Obtenir une image comme contenu de fichier
* *
Chaîne de retour
*
Getimage () Fonction protégée
{Y}
$image = get _ attached file ($this gt request gt get (lsquoidrsquo)
Renvoie le fichier _ get content ($image)
}
Hériter du document
Getresponse () fonctions publiques: Réponse
{Y}
$Response = new Response ($this gt getimage ()
$Response = new Binary Response ($this gt getimage ()
$Response gt setcontentdisposition ( Symfony Component httpfoundation responseheaderbag:: disposition Attachment)
Renvoie $Response
}
Jusqursquooù veux tu aller? Le but de cet article n’est pas de recréer le routage WordPress en utilisant l’oop PHP moderne, bien que j’essaie souvent de le faire. Le but est de présenter un excellent outil: les composants de base http et de encourager à explorer sa documentation. De plus, une fois que familiariserez avec ce composant, serez en mesure drsquoutiliser la plupart des cadres PHP. Ce dernier point est important. J’aime WordPress, mais ce n’est pas le meilleur outil pour tout le travail. En tant que développeur PHP et Javascript, j’ai beaucoup de bons outils à utiliser avec wordpress ou à la place de WordPress, et je veux en tirer le meilleur parti. La mesure dans laquelle lrsquoutilisez dans vos applications, plug ins et sites devrait dépendre de vos besoins. Mais je encourage à apprendre et à utiliser ces choses.
Quatre stratégies pour ajouter un paramètre personnalisé à un site WordPress