Dans ma dernière série d'articles, nous avons examiné les concepts de la programmation orientée objet du point de vue du débutant. L'objectif de cette série était de prendre ceux qui n'étaient pas familiers avec la programmation orientée objet en PHP et d'explorer les aspects fondamentaux du paradigme dans le contexte de WordPress..
Si vous n'avez pas eu l'occasion de lire la série, vous pouvez lire un bref résumé (avec des liens vers chaque article de la série) dans le dernier article..
Au cours de la série, nous avons notamment créé un plugin afin de démontrer les principes orientés objet ainsi que certaines des fonctionnalités de l'API WordPress..
Plus précisément, nous avons créé un plug-in qui nous permettait d'afficher toutes les métadonnées de publication associées à une publication donnée dans le tableau de bord WordPress..
Le plugin est disponible au téléchargement sur GitHub où vous pouvez également parcourir le code source, afficher les commentaires du code, et généralement voir tout ce qui a été fait pour le créer lors de son développement..
Depuis que cet article a été écrit, j'ai reçu un certain nombre de questions, notamment sur la manière de prendre les données affichées dans le tableau de bord, c'est-à-dire les métadonnées de l'article, et de les afficher au début du site Web. site.
Dans cet article, nous allons étudier l'extension du plug-in de manière à pouvoir afficher les données sur une seule page de publication. Nous allons parler de la façon de le faire compte tenu de notre code existant et de la manière de le faire, et nous allons également nous demander pourquoi cela n’est peut-être pas une bonne idée..
Donc, avec cela dit, commençons.
Avant de nous lancer dans la planification de l’extension du plug-in, je pense qu’il serait utile d’avoir une brève discussion sur les raisons pour lesquelles afficher ce type d’informations sur le serveur - bien que possible - ne soit peut-être pas une bonne idée.
C’est-à-dire que je pense que cela montre bien comment, lorsqu’il s’agit de traiter certains types de données, il est important d’examiner les conséquences de ce que nous choisissons de faire lorsque nous construisons des produits pour d’autres et comment nous gérons les données..
En bref, juste parce que nous pouvez faire quelque chose ne veut pas dire que nous devrait fais le.
Pensez-y de cette façon: les métadonnées associées à une publication donnée sont stockées dans la base de données - certaines par WordPress, d'autres par thèmes et d'autres par plugins - qui utilisent toutes les informations pour répondre à leurs besoins spécifiques..
Si vous regardez l'image ci-dessus, vous remarquerez que certaines lignes sont identifiées par des clés précédées d'un trait de soulignement. Par exemple ,, nous avons _edit_lock et _edit_last et ensuite quelques valeurs numériques. Ceci est un exemple de données que WordPress utilise pour gérer en interne l’état des publications..
Les autres clés que vous voyez concernent les plug-ins que j'ai installés dans mon installation WordPress locale et sont utilisées pour montrer comment d'autres utilitaires peuvent enregistrer des données dans la table de métadonnées, puis les associer à la publication donnée..
Le problème avec l’affichage de toutes ces informations au début est que vous pourriez montrer trop d’informations à l’utilisateur.
Dans le cas ci-dessus, rien de particulièrement dangereux ou sensible ne peut contribuer à compromettre l'installation, mais cela ne signifie pas que ce sera toujours le cas. De plus, il y a de grandes chances pour que vous finissiez par afficher des informations liées à un plugin ou à un thème qui n'a jamais voulu que ses informations soient affichées..
En outre, pour la plupart des internautes, voire la plupart d'entre eux, qui consultent un blog, le fait de voir les informations affichées à l'avant du blog ressemblera à du bruit. C'est un jargon technique qui ne veut rien dire. C’est la raison pour laquelle je pense que le meilleur endroit pour le faire est de conserver ces informations reléguées au tableau de bord..
En bref, oui, mais pas parce que je pense que l’affichage de ce type d’informations à l’utilisateur est une bonne idée, mais parce qu’il existe une application pratique qui consiste à étendre un plugin existant, à tirer parti du code existant et des conséquences négatives de faire tel.
Alors oui, parfois, les meilleures leçons peuvent être tirées de la mise en œuvre d’idées qui peuvent ne pas être bonnes rétrospectivement.
Mais ça va. C'est comme ça qu'on apprend, juste?
De plus, il y a encore quelques leçons pratiques qui viennent avec apprendre à étendre une base de code existante.
Comme avec tous les tutoriels que je partage, j'essaie de planifier exactement quoi nous faisons ce que nous faisons avant de le faire afin de ne pas coder avec beaucoup de travail approximatif et d'avoir un plan d'action sur la manière de concevoir notre solution.
Donc, avant d’aller plus loin, si vous n’avez pas examiné le Single Post Meta Manager, veuillez le faire maintenant et nous continuerons..
Une fois cela fait, voici ce que nous allons planifier:
Publique
côté du blog en particulier dans le contexte des messages simples.Rien de trop compliqué, non? Nous devons juste être précis dans nos démarches. Alors, commençons.
En supposant que vous avez déjà vingt-quatre ans activés et que le plug-in est installé, commençons à présenter nos fonctionnalités. La première chose à faire est de
Publique
annuaireSingle_Post_Meta_Manager_Public
classeAprès avoir ajouté les fichiers, les opérations ci-dessus peuvent être effectuées à l’aide des lignes de code suivantes. load_dependencies
fonctionner dans includes / single-post-meta-manager.php
.
fonction privée load_dependencies () require_once plugin_dir_path (dirname (__FILE__)). 'admin / class-single-post-meta-manager-admin.php'; require_once plugin_dir_path (dirname (__FILE__)). 'public / class-single-post-meta-manager-public.php'; require_once plugin_dir_path (__FILE__). 'class-single-post-meta-manager-loader.php'; $ this-> loader = new Single_Post_Meta_Manager_Loader ();
Notez que la seule nouvelle ligne est la seconde Demandez une fois
instruction qui importe le fichier de classe.
Après cela, définissons les propriétés, le constructeur et les méthodes du Single_Post_Meta_Manager_Public
classe:
version = $ version; / ** * Utilise le partiel situé dans le répertoire admin pour restituer les métadonnées * post à la fin du contenu de la publication. * * @param string $ content Contenu de la publication. * @return string $ content Contenu de la publication, y compris les méta-données fournies. * / fonction publique display_post_meta_data ($ content) ob_start (); require_once plugin_dir_path (dirname (__FILE__)). 'admin / partials / single-post-meta-manager.php'; $ template = ob_get_contents (); $ content. = $ template; ob_end_clean (); retourne $ contenu;
Ensuite, nous devons créer le Single Post Meta Manager define_public_hooks
une fonction. Cela devrait ressembler à ceci:
get_version ()); $ this-> loader-> add_action ('the_content', $ public, 'display_post_meta_data');
Ensuite, nous devons définir un appel à cette fonction dans le constructeur. C'est juste en dessous de la $ this-> define_admin_hooks ();
ligne, ajouter $ this-> define_public_hooks ();
appel.
En supposant que tout se passe bien, vous devriez pouvoir activer le plug-in, charger n'importe quel article et voir les mêmes métadonnées maintenant affichées à l'avant de l'article ainsi que dans le tableau de bord de l'article:
Comme mentionné précédemment dans ce didacticiel, l'affichage de ce type d'informations au début d'un message n'est pas nécessairement la meilleure idée; Cependant, apprendre à ajouter concrètement à un plugin existant introduira de toutes nouvelles fonctionnalités tout en réutilisant certains des composants existants..
En fin de compte, la solution à retenir est double:
Donc, après avoir lu ce tutoriel, notez que je n'approuve pas nécessairement le faire dans un environnement de production, mais plutôt comme un outil d'apprentissage. Autrement dit, utilisez-le à vos risques et périls.
Comme d'habitude, s'il vous plaît laissez toutes vos questions, commentaires et plus dans le flux ci-dessous!