Nous allons créer un plugin pour examiner l'utilisation des filtres et des points d'ancrage disponibles pour modifier les colonnes de publication du panneau d'administration. Ajoutez-les, supprimez-les et remplissez-les de contenu.
Lorsque je pense au développement de WordPress, les choses les plus courantes qui me viennent à l’esprit sont les fonctionnalités et implémentations de thèmes et de plug-ins qui permettent de faire fonctionner une idée simple et de l’afficher comme vous le souhaitez. Avec une page principale et une ou plusieurs configurations ici et là.
La flexibilité des API WordPress va bien au-delà de ce que vous connaissez peut-être.
Avant de commencer à faire quoi que ce soit, nous devons comprendre ce que nous allons accomplir, quel sera notre résultat final. Nous allons créer un plug-in permettant de gérer les colonnes de publication du panneau d'administration et leur contenu. Pour créer un plug-in, nous avons besoin d'une idée qui corresponde à nos besoins. Pour ce tutoriel, notre plug-in va transformer légèrement la fonctionnalité posts en une interface très simple de gestion des prix et des devises. Pour être encore plus précis, nous allons:
Et voilà, en un mot, tout ce que ce tutoriel a pour sujet. Encore une fois, nous parlons de l’implémenter dans les pages de gestion des publications du panneau d’administration uniquement. Dans le cadre de ce plan, vous devez savoir comment un plugin WordPress est créé et fonctionne, mais je vais quand même mentionner que nous allons créer un répertoire dans le dossier plugins de WordPress sous le nom de produitA et un fichier à l'intérieur appelé productA.php. Je suppose que c'est évident maintenant que notre plugin est nommé Produit A
, Je pense que c'est un bon nom pour un plugin simple avec les fonctionnalités ci-dessus pour les besoins de ce tutoriel.
C'est une partie facile et amusante, qui crée les premières parties les plus nécessaires du plugin, à savoir les éléments qui l'identifient auprès de WordPress en tant que plugin et exécute le fichier pour que notre plugin fonctionne correctement. Nous allons donc de l'avant et créons notre Nom du plugin
, brancher La description
, Auteur
nom et plugin Version
les valeurs d'en-tête qui sont commentées en haut du code source du fichier du plugin, comme dans l'exemple suivant:
Étape 3 Mise en œuvre des actions et des filtres requis
La première chose que nous allons faire est d’ajouter la fonctionnalité méta-box à notre plugin. Nous voulons ajouter une metabox personnalisée dans notre page d'édition, quelque part en haut de la barre latérale droite. Pour ce faire, nous devons créer une action (ou un hook) dont nous nous occuperons un peu plus tard, mais voyons comment le hook est appelé et implémenté dans cette étape:
Le crochet de la boîte à méta
fonction pA_admin_init () add_meta_box ('pA_metaid', __ ('quantité / prix', 'pA_textdomain'), 'pA_inner_custom_box', 'post', 'side', 'high'); add_action ('admin_init', 'pA_admin_init');Tout d'abord, nous ajoutons une nouvelle action au bas de notre fichier que nous allons utiliser pour un premier paramètre, la balise d'action de
admin_init
pour appeler cette fonction chaque fois qu'un utilisateur accède à la zone d'administration. Le deuxième paramètre est le nom de la fonction de rappel à implémenter lorsque le hook est activé. Nous allons appeler cette fonctionpA_admin_init
et il ressemble à ce qui précède.le
pA_admin_init
function contient la méthode qui crée la meta box dont nous avons besoin, générée par la fonctionadd_meta_box
avec les variables suivantes:
pA_metaid
- pour un identifiant unique de la méta-boîte__ ('quantité / prix', 'pA_textdomain')
- une chaîne qui représente le titre de la méta-boîte'pA_inner_custom_box'
- la fonction de rappel'poster'
- une chaîne représentant le type de publication (car nous travaillons sur des publications, nous allons définir la valeur de la chaîne sur 'poster
''côté'
- une chaîne représentant la position de l'écran où nous voulons que notre méta-boîte soit allumée, nous pouvons utiliser 'Ordinaire
','Avancée
' ou 'côté
'. Nous utilisons 'côté
'comme nous voulons le montrer sur le côté droit de notre contenu'haute'
- la position parmi les autres éléments de la boîte à méta du côté contenu de la pageCe serait à peu près tout pour la première étape de l'action de la méta-boîte.
À un moment donné, les données introduites dans la boîte méta doivent être sauvegardées. Pour le sauvegarder, nous devons ajouter un autre point d'ancrage à la liste, cette fois avec une balise spécifique différente comme premier paramètre..
add_action ('save_post', 'pA_save_postdata');
L'exemple ci-dessus implémente le crochet indispensable. Comme vous pouvez le constater, le paramètre de balise utilisé dans ce cas est save_post
afin d'arriver au point où l'article est soumis, tous les éléments du formulaire sont envoyés à PHP et enregistrés dans la base de données, afin que nous puissions enregistrer nos données exactement au moment où le formulaire est soumis et que WordPress le traite. La fonction de rappel qui fait tout le travail est nommée pA_save_postdata
, nous allons créer cette fonction un peu plus tard dans le tutoriel quand nous nous occuperons de tous les aspects de la méta-boîte.
Comme nous essayons de créer des colonnes supplémentaires dans notre liste de pages de publication, nous devons renseigner les lignes avec les données de ces nouvelles colonnes. Pour ce faire, nous allons utiliser le code suivant:
add_action ('manage_posts_custom_column', 'pA_manage_posts_custom_column', 10, 2);
La balise utilisée est manage_posts_custom_column
et la fonction de rappel pA_manage_posts_custom_column
, fonction que nous allons construire dans quelques instants.
Enfin, nous souhaitons ajouter et supprimer quelques colonnes de la liste des pages de messages. Pour ce faire, nous devons filtrer les existants et supprimer ou ajouter à notre guise en appelant un filtre comme dans l'exemple suivant:
add_filter ('manage_posts_columns', 'pA_manage_posts_columns');
Le filtre, tout comme les actions ont des paramètres principaux que nous utilisons, l’un est la balise, dans ce cas une chaîne du nom de 'manage_posts_columns'
et une fonction de rappel, également sous forme de chaîne mais avec le nom de 'pA_manage_posts_columns'
. Nous construisons et utilisons cette fonction dans l'une des prochaines étapes.
Comme nous voulons créer une méta-boîte et que nous avons déjà défini les points d'ancrage et les fonctions permettant d'obtenir une méthode de rappel qui la génère, nous devons écrire le code correspondant..
Nous allons d’abord regarder le pA_inner_custom_box
une fonction. Cette fonction contient un code très basique qui génère et gère un formulaire avec des données. Tout d'abord, il y a 3 variables $ pA_price
, $ pA_quantity
, et $ pA_currency
contenir les valeurs de nos 3 éléments que nous voulons insérer dans la liste des balises méta et des posts. Pour ce faire, nous allons les obtenir à partir des champs personnalisés dans lesquels nous allons les sauvegarder ensuite. save_post
action. Ensuite, nous créons les champs de formulaire HTML que nous allons utiliser pour publier les données lorsque la publication est mise à jour ou publiée, à nouveau à l'aide de la commande save_post
action de la fonction de rappel. Tout ce code est disponible entièrement ici:
fonction pA_inner_custom_box () global $ post; $ pA_price = get_post_meta ($ post-> ID, 'pA_price', true); $ pA_quantity = get_post_meta ($ post-> ID, 'pA_quantity', true); $ pA_currency = get_post_meta ($ post-> ID, 'pA_currency', true); ?>
| |
devise: | type = "radio" name = "pA-currency" valeur = "USD" /> USD / type = "radio" name = "pA-currency" valeur = "GBP" /> GBP / type = "radio" name = "pA-currency" valeur = "EUR" /> EUR |
Maintenant, premièrement, pourquoi utilisons-nous des champs personnalisés? Pour une gestion facile et pour tout futur tri facile, filtrez à l'intérieur de la requête d'articles. Deuxièmement, nous utilisons deux zones de texte pour chacune des valeurs de prix et de quantité et des boutons radio avec des options USD, GBP et EURO pour les valeurs de devise. Chacun de ces éléments de formulaire se voit attribuer les valeurs des variables que nous avons précédemment renseignées avec les valeurs de champs personnalisés spécifiques.
Voilà pour cette partie, lorsque l'utilisateur met à jour ou publie une publication, ces valeurs sont envoyées à la fonction de rappel suivante de notre didacticiel..
La deuxième partie, très importante, de la fonctionnalité de la méta-boîte, est la sauvegarde des données que nous soumettons. Au début du didacticiel, nous avons implémenté une fonction qui gère les données post-soumises. Maintenant, nous allons regarder comment fonctionne sa fonction de rappel.
Tout d'abord, parce que nous avons besoin d'un moyen d'identifier le poste, nous devons inclure la variable globale $ post
afin d’obtenir la valeur id de la publication actuellement soumise. Ensuite, nous vérifierons si une variable cachée que nous avons créée en tant qu'élément de formulaire a été soumise ou non. S'il a été soumis, nous commençons à extraire les valeurs des champs personnalisés de la base de données pour chaque élément qui nous intéresse: prix, quantité et devise. Nous allons utiliser le get_post_meta
fonction pour obtenir les valeurs de clé méta de champ personnalisé à l'aide du $ post-> ID
La valeur de la variable comme identifiant et le nom de la clé méta qui nous intéresse. Nous avons besoin de ces valeurs pour définir le paramètre de valeur précédent dans notre code suivant à partir de cette fonction qui gère la mise à jour des données..
Les données sont enregistrées en tant que champs personnalisés sous un nom de métake spécifique pA quantité
pour la quantité, pA_price
pour le prix et pMonnaie
pour les valeurs monétaires. Les nouvelles données sont extraites de la $ _POST
variable qui contient les données soumises.
fonction pA_save_postdata () global $ post; if ($ _POST ['pA-hidd'] == 'true') $ pA_price = get_post_meta ($ post-> ID, 'pA_price', true); $ pA_quantity = get_post_meta ($ post-> ID, 'pA_quantity', true); $ pA_currency = get_post_meta ($ post-> ID, 'pA_currency', true); update_post_meta ($ post-> ID, 'pA_quantity', $ _POST ['pA-quantité'], $ pA_quantity); update_post_meta ($ post-> ID, 'pA_price', $ _POST ['pA-price'], $ pA_price); update_post_meta ($ post-> ID, 'pA_currency', $ _POST ['pA-currency'], $ pA_currency);
Ceci conclut l'implémentation de la boîte à méta dans notre plugin.
Enfin, nous avons atteint la partie principale de ce didacticiel, à savoir au moins une des parties principales. Je dis les parties principales parce que ce qui suit est l’objet du tutoriel, mais il ne peut pas fonctionner sans toutes les autres parties déjà réalisées. Nous allons maintenant examiner comment supprimer et ajouter de nouvelles colonnes de publication à la page des publications dans le panneau d'administration..
Étant donné que nous ajoutons des valeurs supplémentaires à l'article, notamment le prix, la devise et la quantité, nous souhaitons dans cette partie que des colonnes supplémentaires soient ajoutées dans la page des publications avec ces noms et les valeurs associées. Essayons de clarifier un peu les choses. Tout d'abord, nous souhaitons supprimer l'auteur, les balises et les commentaires des colonnes. Dans le cadre de ce didacticiel, nous souhaitons savoir comment procéder. Nous n'avons pas besoin de ces colonnes car nous essayons d'agir comme la page des messages traite un produit avec des éléments comme le prix et la quantité.
fonction pA_manage_posts_columns ($ colonnes) global $ wp_query; unset ($ colonnes ['auteur'], $ colonnes ['tags'], $ colonnes ['commentaires']); $ total = 0; foreach ($ wp_query-> posts as $ post) $ total + = get_post_meta ($ post-> ID, 'pA_price', true) * get_post_meta ($ post-> ID, 'pA_quantity', true); $ columns = array_merge ($ columns, array ('price' => __ ('price'), 'devise' => __ ('devise'), 'quantité' => __ ('quantité'), 'Featured_image' => __ ('Image'), 'total' => __ ('Total:'. $ Total))); retourne $ colonnes;
Cela semble assez simple, non? Je parle bien sûr de la fonction de rappel ci-dessus pour le manage_posts_columns
étiquette de filtre qui gère la gestion des colonnes de publication, comme son nom l'indique. Il n’ya que quelques lignes de code, mais cette partie est en réalité plus compliquée que n’importe quelle partie précédente de ce didacticiel (et ces parties ne sont pas si difficiles que celles-ci ne doivent pas être aussi difficiles à comprendre).
Premièrement, la fonction de rappel du filtre mentionné précédemment a un paramètre qui contient toutes les colonnes qu’il contient sous forme de tableau. Nous mettons ce paramètre sous le nom $ colonnes
afin que nous puissions l'utiliser dans quelques instants. Ensuite, nous devons intégrer une variable globale dans la fonction, à savoir $ wp_query
. Nous allons également utiliser ceci sous peu.
Depuis le $ colonnes
paramètre est un tableau contenant toutes les colonnes de la page posts, tout ce que nous avons à faire dans ce cas est de supprimer les paramètres de tableau que nous souhaitons. Pour ce faire, nous utilisons simplement le non fixé
Fonction PHP et nous séparons les noms de tableaux que nous voulons supprimer par des virgules. Facile.
Parce que nous utilisons le prix et la quantité comme des valeurs avec lesquelles nous travaillons de manière dynamique, nous souhaitons faire le total de ces valeurs dans une ligne supplémentaire spéciale que nous ajouterons dans un instant. Pour calculer cela, nous devons extraire les valeurs de tous les prix et quantités de chaque article, les multiplier et additionner les résultats. Le résultat sera un total de toutes les valeurs des postes de publications multiplié par leur quantité. La somme de ce que nous voulons publier dans le titre de la colonne lorsque nous ajoutons la colonne à la partie suivante. Nous récupérons donc les valeurs des champs personnalisés de prix et de quantité de chaque publication à l'aide de la touche get_post_meta
fonction, et faire un total en utilisant un incrémenté $ total
variable. Pour créer la boucle avec nos données requises, nous utiliserons le système intégré. $ wp_query
variable globale.
Pour ajouter des colonnes, nous allons utiliser l'approche que nous avons utilisée pour les supprimer uniquement d'une manière différente, à savoir pas non fixé
fonction pour enlever mais le array_merge
Fonction PHP pour l'ajout de nouvelles colonnes. Les colonnes sont ajoutées sous forme de tableaux dans cet ordre et par les noms suivants: prix, devise, quantité, image sélectionnée et Total..
Tout ce qui reste à faire maintenant est de renvoyer le $ colonnes
variable et la fonction de rappel fera sa magie. Le résultat final est quelque chose qui devrait donner à la page des posts le titre de la table des têtes ressemblant à ceci:
La dernière étape de ce didacticiel concerne les valeurs de colonne personnalisées. Après avoir créé les colonnes précédemment, nous devons afficher les valeurs de ces prix, devises, etc., dans la liste des publications, nous devons ajouter correctement les valeurs correspondantes des valeurs personnalisées à la liste. Pour ce faire, nous allons utiliser un hook précédemment implémenté qui a la fonction de rappel avec le nom de pA_manage_posts_custom_column
. La fonction a deux paramètres, un paramètre de colonne contenant la balise name de la colonne dans laquelle nous nous trouvons, utilisé par nous pour identifier où nous sommes, et l'identifiant de publication en tant que second paramètre..
Nous avons d’abord besoin d’une condition de commutation pour vérifier la $ colonne
variable pour le type de message dans lequel nous sommes. Bien sûr, nous ne sommes intéressés que par nos colonnes créées sur mesure, nous ne mettrons donc les cas dans ces valeurs..
Ces trois types de colonne que nous avons créés ont un type de données de clé méta commun, une simple chaîne qui est une colonne personnalisée que nous pouvons obtenir en utilisant le get_post_meta
fonctionner avec les variables appropriées, plus précisément $ post_id
pour identifier la publication, clé méta pour identifier le champ personnalisé et une variable booléenne définie sur true pour obtenir les données sous forme de chaîne en écho ou sous forme de tableau.
Nous avons ajouté une colonne un peu différente et qui n’était pas vraiment mentionnée auparavant. Je parle de la l'image sélectionnée
colonne qui affichera la balise HTML de l'image sélectionnée à partir de la publication dans la rangée de la publication actuelle. Pour obtenir l’image sélectionnée, nous utilisons le get_post_thumbnail
fonctionne avec l'identifiant de la publication comme identifiant et une chaîne de taille.
Une dernière valeur de colonne est le total. Le total de chaque publication est calculé en extrayant les champs personnalisés à l'aide de la même méthode que précédemment (get_post_meta
fonction) du prix et de la quantité et en les multipliant. Le total est le résultat que nous recherchons.
fonction pA_manage_posts_custom_column ($ column, $ post_id) switch ($ column) case 'price': $ pA_val = get_post_meta ($ post_id, 'pA_price', true); Pause; case 'devise': $ pA_val = get_post_meta ($ post_id, 'pA_currency', true); Pause; case 'quantité': $ pA_val = get_post_meta ($ post_id, 'pA_quantity', true); Pause; case 'Featured_image': if (has_post_thumbnail ()) $ pA_val = get_the_post_thumbnail ($ post_id, 'vignette'); Pause; case 'total': $ pA_price = get_post_meta ($ post_id, 'pA_price', true); $ pA_quantity = get_post_meta ($ post_id, 'pA_quantity', true); $ pA_val = $ pA_price * $ pA_quantity; Pause;
L'exemple ci-dessus est la façon dont la fonction dont nous avons parlé précédemment doit être implémentée pour fonctionner correctement. Vous pouvez vérifier le code ci-dessus pour comprendre cette section du didacticiel. En guise de résultat visuel, hello world post s'est vu attribuer quelques valeurs de prix, de devise et de quantité, et un écran d'impression aléatoire a été chargé en tant qu'image sélectionnée. Avec notre plugin installé, la page d'administration posts ressemble à ceci:
WordPress devient de plus en plus puissant et flexible avec de nombreuses nouvelles fonctionnalités et possibilités que non seulement nous n'avions pas mais que nous ne réalisions peut-être même pas à quel point elles sont utiles. Ce didacticiel a pour but de vous aider à comprendre comment gérer facilement des colonnes pour les publications dans la zone d'administration. Vous pouvez choisir d'utiliser ces informations comme bon vous semble pour tout projet qui le rendrait utile. Pensez simplement aux possibilités que vous pouvez créer avec ces étapes simples.!
Quelles sont les autres fonctionnalités WordPress sous-estimées que vous pensez souvent que les gens oublient? Faites le nous savoir dans les commentaires!