Mise à jour: ce code a été récemment mis à jour pour travailler sur WordPress 4.7 +. Avez 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 guiderai rapidement dans les quelques lignes de code nécessaires pour créer dynamiquement des modèles de page WordPress directement via PHP. Lrsquoinspiration de cet article et le génie derrière la solution de Code vient de Tom mcfarlin: Jrsquoutilise une version modifiée de son code original que pouvez trouver sur son github. Jrsquoai continué à faire des commentaires (et jrsquoai ajouté quelques uns de mes propres commentaires) parce que jrsquoai trouvé très utile drsquoexpliquer ce qui srsquoest 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 nrsquoa besoin que de 3 variables: le plug in Slug: il sert simplement drsquoidentificateur 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 pouvez lrsquoimaginer, il srsquoagit drsquoune 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 drsquoun moyen de retourner (ou de créer) cette instance pour nous. Pour ce faire, nous avons besoin drsquoune 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 lrsquoInstanciation de la classe). Initialiser le plug in en définissant les filtres et les fonctions administratives La fonction privée _ Construct () {$this gt Templates = array () ajoute un filtre à la méta boîte de propriété pour injecter le modèle dans le cache. (version compare (floatval (get bloginfo (lsquoversionrsquo), lsquo4.7rsquo, lsquo Templates = array (lsquogoodto Bad template.phprsquo = gt
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 lrsquoé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 (srsquoil est sélectionné) aux données post sauvegardées. Lignes 23 à 28: Ce filtre ajoute le modèle _ include au crochet View Project template. Crsquoest 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 crsquoest simple, crsquoest très important. Ici, pouvez spécifier le modèle de page que souhaitez ajouter et le chemin du fichier dans lequel se trouve le fichier modèle de page (par exemple, lsquosomething.phprsquo). Jrsquoa I inclus un exemple (à utiliser dans le plug in exemple). Voici un exemple générique: $this gt Templates = array (lsquofile _ Path and namersquo = gt lsquoTemplate titlersquo, lsquoAWESOME template.phprsquo = gt lsquoAWESOMErsquo, lsquoTemplates organized template.phprsquo = gt organized lsquo) Codez et répétez si nécessaire.
Register _ Project Templates () Jrsquoai déjà mentionné cette méthode Voyons ce qursquoil 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 drsquoabord le Code et je expliquerai. Fonctions publiques Register _ Project Templates ($$ATTS) { Create Key $cache key = lsquopage Templates -lsquo. MD5 (get Theme Root () lsquoget Stylesheet ()) retrieve cache LIST if it does not exist or is empty, prepare Array $temptemplates = WP get Theme () gt gt get page Templates -lsquo. MD5 (get Theme Root () get Stylesheet () retrieve cache LIST if it does not exist or is empty, prepare Array $temptemplates = WP get Theme () gt gt get page templates_ Templates () if
Tout le chemin! Jrsquoespère que trouverez ce que je vais dire utile et que en profiterez à lrsquoavenir! 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. (version _ compare (floatval (get bloginfo (lsquoversionrsquo),
Ajouter un modèle de page à WordPress en utilisant le plugin