Ajouter un modèle de page à WordPress en utilisant le plugin
Mise à jour: ce code a été récemment mis à jour pour travailler sur WordPress 4.7 +. Avez – vous déjà voulu créer votre propre modèle de page, mais n’avez pas accès au thème lui – même? I. en tant qu’auteur du plugin wordpress, j’ai trouvé ce problème particulièrement irritant lors du développement du plugin. Heureusement, la solution est très simple! Je vous guiderai rapidement dans les quelques lignes de code nécessaires pour créer dynamiquement des modèles de page WordPress directement via PHP. L’inspiration de cet article et le génie derrière la solution de Code vient de Tom mcfarlin: J’utilise une version modifiée de son code original que vous pouvez trouver sur son github. J’ai continué à faire des commentaires (et j’ai ajouté quelques – uns de mes propres commentaires) parce que j’ai trouvé très utile d’expliquer ce qui s’est passé – je ne peux pas mieux le dire moi – même!
Vous trouverez le code complet et un exemple de plug – in au bas de cet article. On y va? Nous allons créer des fonctions PHP en utilisant des classes PHP. Pour ceux qui ne sont pas des experts en classe PHP, une classe est définie comme un objet qui contient une collection de fonctions et de variables qui travaillent ensemble. Regardez le profil PHP. Net pour plus de détails sur la grammaire et la théorie. Notre wrapper n’a besoin que de 3 variables: le plug – in Slug: il sert simplement d’identificateur unique pour le plug – in. Instance de classe: Puisque nous ajoutons une instance de cette classe à l’en – tête WordPress, il vaut mieux nous en souvenir. Matrice du modèle: Comme vous pouvez l’imaginer, il s’agit d’une matrice contenant le nom et le titre du modèle. Les codes sont les suivants:
Class pagetemplate {\/ * * * identificateur unique * \/ Protected $plugin _ Slug; \/ * * * Reference to such instances. * \/ private static $instance; \/ * * * A Array of Templates Tracked by this plugin. * \/ Protected $templates; get class instance come Ho det
Plus tôt, nous ajouterons une instance de la classe à l’en – tête WordPress en utilisant la fonction add _ filter (). Par conséquent, nous avons besoin d’un moyen de retourner (ou de créer) cette instance pour nous. Pour ce faire, nous avons besoin d’une méthode simple appelée \
Renvoie une instance de cette classe Fonctions statiques publiques get _ instance () {if (NULL = = self: $instance) {self: $instance = new pagetemplate ();} Renvoie self: $instance;} Ce sera la méthode à invoquer lors de l’ajout de notre classe à l’en – tête WordPress en utilisant « add _ action () ». Filtre WordPress maintenant que nous avons corrigé la méthode \
Pour ce faire, nous devons utiliser la méthode \ \ Construct (qui sera exécutée lors de l’Instanciation de la classe). Initialiser le plug – in en définissant les filtres et les fonctions administratives La fonction privée _ Construct () {$this – > Templates = array (); \/ \/ ajoute un filtre à la méta – boîte de propriété pour injecter le modèle dans le cache. Si (version compare (floatval (get bloginfo (‘version’), ‘4.7’, ‘ Templates = array (‘goodto Bad template.php’ = > \
Lignes 9 à 13: Ce filtre ajoute \
Notre nouveau modèle “spoofing” WordPress lui fait croire que les fichiers de modèles de page existent réellement dans le répertoire des modèles. Ceci ajoute le modèle de page à la liste déroulante des métazones des propriétés de page dans l’éditeur de page. Ligne 16 – 20: ici, nous sommes essentiellement les mêmes que le bloc de Code précédent, sauf que cette fois, nous ajoutons également le modèle de page (s’il est sélectionné) aux données post sauvegardées. Lignes 23 à 28: Ce filtre ajoute le modèle _ include au crochet View Project template. C’est une fonction très importante; Cela indique à WordPress l’emplacement réel du fichier modèle de page. WordPress rendra la page finale en utilisant le chemin fourni ici. Lignes 31 à 34: même si c’est simple, c’est très important. Ici, vous pouvez spécifier le modèle de page que vous souhaitez ajouter et le chemin du fichier dans lequel se trouve le fichier modèle de page (par exemple, ‘something.php’). J’a I inclus un exemple (à utiliser dans le plug – in exemple). Voici un exemple générique: $this – > Templates = array (‘file _ Path and name’ = > ‘Template title’, ‘AWESOME template.php’ = > ‘AWESOME’, ‘Templates \/ organized template.php’ = > organized ‘); Codez et répétez si nécessaire.
Register _ Project Templates () J’ai déjà mentionné cette méthode; Voyons ce qu’il a fait. Essentiellement, le but de cette approche est de manipuler le cache wordpress pour insérer les données pertinentes sur les modèles de page au bon endroit. Regardez d’abord le Code et je vous expliquerai. Fonctions publiques Register _ Project Templates ($$ATTS) {\/ \/ \/ Create Key $cache key = ‘page Templates -‘. MD5 (get Theme Root () \/ \/ ‘get Stylesheet ()); \/ \/ retrieve cache LIST \/ \/ \/ if it does not exist or is empty, prepare Array $temptemplates = WP get Theme () – > > get page Templates -‘. MD5 (get Theme Root () \/ \/ \/ \/ \/ get Stylesheet (); \/ \/ retrieve cache LIST \/ \/ if it does not exist or is empty, prepare Array $temptemplates = WP get Theme () – > > get page templates_ Templates (); if
Tout le chemin! J’espère que vous trouverez ce que je vais dire utile et que vous en profiterez à l’avenir! Le Code entier de Bellow est le code complet du plug – in pour faciliter la copie et le collage. Modèle = tableau () \/ Ajoute un filtre à la métazone des attributs pour injecter le modèle dans le cache. Si (version _ compare (floatval (get bloginfo (‘version’), \