Le code orienté objet, entre autres choses, peut aider à organiser et à ajouter de la réutilisabilité à votre code. Dans ce tutoriel, je vais vous apprendre les bases de l'écriture d'un plugin WordPress en utilisant des techniques orientées objet. Nous allons utiliser l'API de Dribbble comme exemple pour ce tutoriel. Prêt?
Avant de poursuivre avec ce didacticiel, vous devez au moins avoir une compréhension élémentaire de l’écriture d’un plugin WordPress. Jonathan a écrit un tutoriel incroyable sur "Comment écrire un plugin WordPress". Lui donner une lecture.
Créer des plugins WordPress avec du code orienté objet est assez efficace et ordonné, comparé à l’utilisation de code procédural. Il est plus facile de gérer la base de code et de l'étendre à l'aide de techniques d'héritage, ce qui peut s'avérer particulièrement utile lors de l'écriture d'un gros plugin..
Pour écrire un plugin WordPress, nous avons d’abord besoin de sens. Nous allons écrire un plugin qui affichera les derniers plans de Dribbble, en utilisant leur API REST. Nous ajouterons ensuite le support du shortcode pour les publications et les widgets, ainsi que la balise de modèle pour les thèmes.
Le code orienté objet est basé sur des classes et des méthodes (fonctions). Créons notre classe principale, qui interagira avec les filtres et les points d'ancrage de WordPress.
classe WPDribbble fonction publique __construct () $ wpDribbble = new WPDribbble ();
Les classes PHP ont une fonction constructeur, __construction
, qui est exécuté dès qu'une nouvelle instance d'une classe est instanciée. Tous les filtres et crochets WordPress seront enregistrés sous le constructeur de notre classe de plugin. Permet d'avancer et d'enregistrer un shortcode pour notre plugin. le add_shortcode ()
fonction / hook passera sous la fonction constructeur.
La nouvelle instance d’une classe / objet est enregistrée à l’aide du Nouveau
mot-clé. Reportez-vous à la dernière ligne du code ci-dessous.
classe WPDribbble fonction publique __construct () add_shortcode ('Dribbble', array ($ this, 'shortcode')); fonction publique shortcode () $ wpDribbble = new WPDribbble ();
Remarquez comment nous utilisons un
tableau
dans le paramètre de fonction de rappel? Pour enregistrer des fonctions de rappel dans un objet, nous devons utiliser untableau
.
Le premier élément du tableau référence l'objet, via $ this
. Le deuxième élément de la tableau
est le nom de la méthode dans la classe. Tous les hooks et filtres doivent être référencés de la sorte quand ils sont dans une classe.
# 1. Utilisation standard add_shortcode ('shortcode_name', 'shortcode_func'); function shortcode_func () // Le contenu de cette fonction sera exécuté lorsque le blogueur // utilisera le shortcode [nom_courton]. # 2. Avec PHP 5.3, nous pouvons passer une fonction anonyme. add_shortcode ('shortcode_name', function () // Le contenu de cette fonction sera exécuté lorsque le blogueur // utilisera le shortcode [nomcode abrégé].); # 3. Dans une classe, classe WPDribbble fonction publique __construct () add_shortcode ('Dribbble', array ($ this, 'shortcode')); public function shortcode () // Le contenu de cette fonction sera exécuté lorsque le blogueur // utilisera le shortcode [nom_courton].
Comme nous n’avons actuellement besoin d’aucune fonction API sophistiquée, nous allons créer un wrapper d’API assez simple pour Dribbble. Il existe déjà une bibliothèque disponible pour Dribbble, mais, dans l’intérêt de ce tutoriel, nous allons écrire la nôtre. Cela vous aidera à comprendre les concepts de ce tutoriel..
Nous allons écrire un DribbbleAPI objet
, et enregistrer un méthode
appelé getPlayerShots ()
pour interagir avec l'API de Dribbble et renvoyer une tableau
des derniers coups.
Créons un nouveau fichier pour cette classe, appelé DribbbleAPI.php
class DribbbleAPI // url to Dribbble api protected $ apiUrl = 'http://api.dribbble.com/'; // nom d'utilisateur ou identifiant utilisateur Dribbble protected $ user;
Ci-dessus, nous mettons en place deux variables de classe.
__construction
) méthode.class DribbbleAPI // url to Dribbble api protected $ apiUrl = 'http://api.dribbble.com/'; // nom d'utilisateur ou identifiant utilisateur Dribbble protected $ user; fonction publique __construct ($ user) $ this-> user = $ user;
Le constructeur est passé un $ utilisateur
variable, qui est ensuite transmise par le constructeur à la propriété de classe, appelée utilisateur
.
Nous préfixons la propriété ou le nom de la variable avec Publique
pour spécifier que la valeur de cette propriété peut être extraite de l'extérieur du classe
. Si nous souhaitons plutôt limiter l'accès à la propriété à cette seule classe
, et peut-être tout classe
es qui en héritent, nous utiliserions le protégé
préfixe. Cette pratique est appelée encapsulation.
Nous avons la base prête pour notre wrapper API Dribbble. Maintenant, nous allons écrire un nouveau méthode
, appelé getPlayerShots ()
. Le but de ceci méthode
sera d'interroger l'API et de convertir le résultat en un tableau
pour une utilisation dans notre plugin.
class DribbbleAPI // url to Dribbble api protected $ apiUrl = 'http://api.dribbble.com/'; // nom d'utilisateur ou identifiant utilisateur Dribbble protected $ user; fonction publique __construct ($ user) $ this-> user = $ user; fonction publique getPlayerShots ($ perPage = 15) $ user = $ this-> user; $ json = wp_remote_get ($ this-> apiUrl. 'players /'. $ user. '/ shots? per_page ='. $ perPage); $ array = json_decode ($ json ['body']); $ shots = $ array-> shots; retourner $ coups;
En savoir plus sur wp_remote_get.
le getPlayerShots
fonction renvoie l'utilisateur de la variable de classe. Il utilise WordPress ' wp_remote_get
fonction pour interroger l'API Dribbble. L’API répond ensuite à notre requête par une chaîne JSON, qui est ensuite analysée dans une tableau
et renvoyé à la fonction en utilisant le revenir
mot-clé.
C’est tout ce dont nous avons besoin de l’API pour le moment - simplement un tableau
des coups de joueur. Si nous avons besoin de plus de fonctionnalités à l’avenir, nous pouvons en ajouter davantage. méthode
s au courant classe
, ou créer un nouveau classe
cela étend celui-ci. Encore une fois, cela s'appelle l'héritage.
DribbbleAPI
ClasseC'est la partie amusante; le fraîchement cuit DribbbleAPI
classe
entrera en service. Nous allons passer en revue les plans retirés de l’API et générer un html
liste des prises de vues, qui seront transmises au shortcode et à la balise de modèle. Pendant la boucle, les images Dribbble de taille normale seront mises en cache et enregistrées dans le dossier du plug-in, et les vignettes seront générées à l'aide de TimThumb..
Pour déterminer si les images complètes sont déjà stockées localement, le chemin du plugin
est requis. De plus, pour générer les vignettes avec timthumb
, la URL du plugin
est requis. Pour cela, nous allons créer deux variables de classe appelées pluginPath
et pluginURL
dans notre WPDribbble
classe, puis définissez leurs valeurs depuis le constructeur méthode
.
classe WPDribbble protected $ pluginPath; protected $ pluginUrl; fonction publique __construct () // Définir le chemin du plugin $ this-> pluginPath = dirname (__ FILE__); // Définir l'URL du plugin $ this-> pluginUrl = WP_PLUGIN_URL. '/ wp-Dribbble'; add_shortcode ('Dribbble', tableau ($ this, 'shortcode'));
getImages ()
MéthodeCréer un nouveau méthode
dans le WPDribbble
classe
, appelé getImages.
À l'intérieur d'un
classe
, vous pouvez utiliser des noms génériques pour les fonctions. Ils ne seront pas en conflit avec d'autres plugins ou les fonctions intégrées de WordPress, car ils sont sous laclasse
espace de noms.
fonction publique getImages ($ utilisateur, $ images = 3, $ largeur = 50, $ hauteur = 50, $ caption = true)
$ utilisateur
sera utilisé lors de l'enregistrement d'une nouvelle instance du DribbbleAPI
classe.$ images
sera utilisé lors de l'interrogation de l'API via le getPlayerShots
méthode.Ensuite, nous allons inclure le DribbbleAPI
classe dans le getImages ()
fonction et créer une nouvelle instance pour saisir les images.
fonction publique getImages ($ utilisateur, $ images = 3, $ largeur = 50, $ hauteur = 50, $ caption = vrai) include 'DribbbleAPI.php'; $ DribbbleAPI = new DribbbleAPI ($ user); $ shots = $ DribbbleAPI-> getPlayerShots ($ images); si ($ coups)
le $ coups
la variable dans le code est remplie avec un tableau
de trois récents Dribbbles du $ utilisateur
.
Comme mentionné précédemment, nous allons faire une boucle à travers le $ coups
tableau
, et enregistrez les images en taille réelle localement à des fins de mise en cache. Les images en cache seront utilisées avec TimThumb pour servir les vignettes. Pour stocker des images complètes et des vignettes générées par TimThumb, créez deux dossiers. Nous allons utiliser images complètes /
pour stocker les images en taille réelle, et cache /
pour les vignettes, puisqu'il s'agit du nom de dossier par défaut pour TimThumb.
Le code HTML de la liste sera généré dans le $ coups
boucle.
fonction publique getImages ($ utilisateur, $ images = 3, $ largeur = 50, $ hauteur = 50, $ caption = vrai) include 'DribbbleAPI.php'; $ DribbbleAPI = new DribbbleAPI ($ user); $ shots = $ DribbbleAPI-> getPlayerShots ($ images); if ($ shots) $ html [] = '
'. $ shot-> titre. '
'; // combinez l'url du titre, le titre et la vignette pour les ajouter à la liste ul $ html [] = 'C'est toujours une bonne idée d'ajouter des classes à chaque élément de votre plugin. Cela offre aux utilisateurs avancés de votre plugin la liberté de le personnaliser. Évitez d'utiliser des CSS en ligne pour le contenu généré par votre plugin..
Comme son nom l'indique, les codes abrégés permettent aux utilisateurs d'ajouter facilement un contenu complexe dans les articles de blog..
Nous avons déjà le add_shortcode
crochet prêt dans notre constructeur de classe de plugin. Maintenant, nous allons écrire le shortcode méthode
à l'intérieur de notre classe
, qui va extraire les attributs de shortcode et renvoyer les images Dribbble en utilisant le getImages ()
méthode.
Nous appellerons notre shortcode [Dribbble]
. Comme mentionné précédemment, le nom du shortcode est déterminé par le premier paramètre de la add_shortcode
une fonction. Il sera utilisé avec les attributs requis pour la getImages ()
méthode. Par exemple: [Utilisateur de Dribbble = images haris = 5 largeur = 100 hauteur = 100 légende = vrai]
.
fonction publique shortcode ($ atts) // extrait les attributs en variables extract (shortcode_atts (array ('images' => 3, 'width' => 50, 'height' => 50, 'caption' => true,) , $ atts)); // passe les attributs à la fonction getImages et rend les images retournent $ this-> getImages ($ atts ['user'], $ images, $ width, $ height, $ caption);
Par défaut, les widgets WordPress ne prennent pas en charge les codes abrégés, mais en utilisant le widget_text
filtrer, on peut forcer le support du shortcode dans les widgets WordPress.
Nous pouvons ajouter le filtre dans notre WPDribbble
constructeur d'objet.
fonction publique __construct () // Définir le chemin du plugin $ this-> pluginPath = dirname (__ FILE__); // Définir l'URL du plugin $ this-> pluginUrl = WP_PLUGIN_URL. '/ wp-Dribbble'; add_shortcode ('Dribbble', tableau ($ this, 'shortcode')); // Ajout du support de shortcode pour les widgets add_filter ('widget_text', 'do_shortcode');
La balise template peut être utilisée directement dans les thèmes WordPress. L’objet de base de la balise modèle sera de créer une nouvelle instance de notre WPDribbble
classe et appelez le getImages ()
méthode. La balise template sera une simple fonction PHP qui doit être enregistrée en dehors du plugin. classe
. Il doit avoir un nom unique. sinon, il sera en conflit avec des fonctions / plugins avec un nom similaire. Depuis notre plugin s'appelle WP-Dribbble
, nous appellerons la balise template, wp_Dribbble ()
.
fonction wp_Dribbble ($ utilisateur, $ images = 3, $ largeur = 50, $ hauteur = 50, $ caption = true) $ wpDribbble = new WPDribbble; echo $ wpDribbble-> getImages ($ utilisateur, $ images, $ largeur, $ hauteur, $ légende);
Toutes nos félicitations! Vous avez réussi à écrire un plugin WordPress avec la POO. Si vous avez des questions, faites-le moi savoir et je ferai de mon mieux pour vous aider?