Au cours des dernières années, WordPress a vraiment évolué pour devenir un système de gestion de contenu à part entière, et c’est lorsque vous libérez vraiment certaines de ses fonctionnalités que vous réalisez que WordPress peut être utilisé pour alimenter à peu près n’importe quel type de site Web.
Mon moment eurêka est venu lorsqu’un client m’a demandé de lui créer un système de suivi des commandes. Historiquement, il prenait les commandes d’équipements médicaux des représentants et remplissait tous ses documents manuellement. Il passait ensuite toute la journée au téléphone, répondant aux appels des représentants, soit pour passer de nouvelles commandes, soit pour vérifier l’état d’une commande existante.
Eh bien, il a cherché à changer tout cela en créant un site Web où il pourrait saisir toutes ses commandes, et ses clients pourraient ensuite vérifier leur statut à volonté, et même recevoir des mises à jour par e-mail lorsque la commande était mise à jour avec de nouvelles informations. L’idée était qu’il aurait alors plus de temps pour développer son entreprise, au lieu de passer toute la journée au téléphone, à faire du travail administratif.
TYPES DE POSTES PERSONNALISÉS
La réponse à son problème réside dans la puissance des types de publication personnalisés. Les sites WordPress standard ont deux types de types de publications : les publications et les pages, mais vous pouvez en ajouter autant que vous le souhaitez. Vous pouvez même en avoir sur votre site à partir de thèmes ou de plugins prenant en charge des éléments tels que des événements, des annonces immobilières, des produits ou des curseurs.
Dans ce cas, j’avais besoin de créer un type de publication personnalisé pour ses commandes. Ceux-ci abriteraient ensuite les informations pour chaque commande, à afficher sur le front-end, pour que ses clients puissent les voir.
Je ne vais pas passer en revue le processus de création d’un type de publication personnalisé, car j’ai déjà couvert cela dans un autre tutoriel : Enregistrement de types de publication personnalisés.
Ce dont je veux discuter ici, c’est comment organiser vos données et les afficher comme vous le souhaitez. Par exemple, l’éditeur WordPress standard ne s’est pas prêté à l’enregistrement de ces commandes, car il n’a pas de zones individuelles pour toutes les petites informations qui ont formé la commande, telles que le nom du patient, le numéro de commande et le représentant de la commande qui auraient besoin de être appelé à la fois sur le front-end du site et dans les e-mails au représentant dans le dossier.
C’est là qu’interviennent les méta-boîtes personnalisées. Les méta-boîtes personnalisées vous permettent de créer de nouvelles « fenêtres » dans votre éditeur pour stocker des informations spécifiques. Ainsi, bien que l’éditeur de publication dispose d’une énorme boîte pour le contenu de votre publication, vous n’en aurez peut-être pas besoin pour votre type de publication personnalisé, comme je ne l’ai pas fait avec le type de publication personnalisé de mes commandes. En tant que tel, j’ai désactivé l’éditeur lorsque j’ai enregistré le type de publication personnalisé, de sorte que j’avais le contrôle total de l’écran de saisie des données, comme vous le verrez ci-dessous.
COFFRETS MÉTA PERSONNALISÉS
Boîtes méta personnalisées est un script qui rend le processus de création de ces boîtes méta incroyablement facile. De plus, il a pris certains des types de champs les plus complexes (tels que les sélecteurs de couleurs, les sélecteurs de date et les éditeurs WYSIWYG) et a effectué tout le codage pour vous, de sorte que tout ce que vous avez à faire est de dicter le type de chaque champ, et il sera apparaissent comme par magie.
L’inclure dans votre thème ou plugin est un processus très simple. Tout ce que vous avez à faire est de télécharger les fichiers du Dépôt GitHub et copiez-les dans votre propre structure de dossier de thème ou de plugin. Je recommande de mettre les fichiers dans une bibliothèque ou un dossier inclus, pour une meilleure organisation. Dans mes plugins, je télécharge tous les fichiers dans /wp-content/plugins/my-plugin/includes/metabox/.
Une fois que tous les fichiers et dossiers ont été téléchargés à l’emplacement de votre choix, tout ce que vous avez à faire pour les « activer » et les rendre disponibles est d’inclure init.php à partir de votre plugin. Par exemple, dans mon exemple, la fonction suivante a été incluse dans le fichier du plugin principal pour appeler init.php dans le dossier /includes/metabox/ :
function be_initialize_cmb_meta_boxes() {
if ( !class_exists( 'cmb_Meta_Box' ) ) {
require_once( 'includes/metabox/init.php' );
}
}
add_action( 'init', 'be_initialize_cmb_meta_boxes', 9999 );
Vous êtes maintenant en mesure d’utiliser réellement les fonctionnalités fournies par le script. Le example-functions.php est un excellent endroit pour commencer à apprendre comment fonctionne le script. Il fournit un exemple de la syntaxe nécessaire pour inclure chaque type de champ autorisé par le script. Les types de champs parmi lesquels vous pouvez choisir incluent :
- Titre (pour organiser vos boîtes méta dans le tableau de bord)
- Texte (petit, moyen et grand)
- Sélecteur de date (standard ou horodatage UNIX)
- Devise
- Zone de texte (petite et grande)
- Menu déroulant
- Boutons radio (en ligne et standard)
- Case à cocher (simple et multiple)
- Éditeur WYSIWYG
- Sélecteurs de taxonomie (liste déroulante, cases à cocher ou boutons radio)
- Téléchargeur de fichiers
- Liste des fichiers
Il vous suffit de décider quelles informations vous essayez d’enregistrer et quel type de champ serait le mieux adapté à chaque cas.
Pour vous montrer ce script, je vais utiliser un exemple plus simple que le système de commande que j’ai mentionné plus tôt, car il est plus complexe. J’ai récemment écrit un plugin où je créais un système d’alertes simple, où l’administrateur pouvait spécifier le titre de l’alerte, sa priorité, quelle était la description de l’alerte et comment la résoudre.
Pour gérer cela, j’ai utilisé le titre du message pour le titre de l’alerte, des boutons radio en ligne pour définir la priorité et des éditeurs WYSIWYG pour écrire la description et la résolution (permettant une édition riche et facile, telle que des listes à puces et la mise en forme de texte).
La fonction suivante est l’ensemble du code qui la réalise : vous remarquerez qu’elle suit le format du fichier example-functions.php. Je décrirai chaque partie du code après :
function twpb_alerts_metaboxes( $meta_boxes ) {
$prefix = 'twpb_alert_'; // Prefix for all fields
$meta_boxes[] = array(
'id' => 'alert_metabox',
'title' => 'Alert Information',
'pages' => array('twpb_alerts'), // post type
'context' => 'normal',
'priority' => 'high',
'show_names' => true, // Show field names on the left
'fields' => array(
array(
'name' => 'Priority',
'desc' => '',
'id' => $prefix . 'priority',
'type' => 'radio_inline',
'options' => array(
array( 'name' => 'High', 'value' => 'high', ),
array( 'name' => 'Medium', 'value' => 'medium', ),
array( 'name' => 'Low', 'value' => 'low', ),
),
),
array(
'name' => 'Description of issue',
'desc' => 'Enter a description of what the issue is.',
'id' => $prefix . 'description',
'type' => 'wysiwyg',
'options' => array( 'textarea_rows' => 5, ),
),
array(
'name' => 'Proposed resolution',
'desc' => 'Inform users how they can resolve the issue.',
'id' => $prefix . 'resolution',
'type' => 'wysiwyg',
'options' => array( 'textarea_rows' => 5, ),
),
),
);
return $meta_boxes;
}
add_filter( 'cmb_meta_boxes', 'twpb_alerts_metaboxes' );
À la ligne 2, j’ai défini un préfixe unique pour les champs personnalisés afin d’éviter un conflit avec d’autres plugins, et à la ligne 4, j’ai donné un identifiant unique à la métabox qui apparaîtra sur le type de publication personnalisé dans le tableau de bord. La ligne 5 définit le titre de la métaboîte et la ligne 6 définit les types de publication personnalisés sur lesquels afficher ces métaboîtes. Comme il s’agit d’un tableau, vous pouvez l’inclure dans autant de types de publications que vous le souhaitez, y compris les publications et les pages si vous le souhaitez.
La ligne 10 démarre le tableau des champs que je veux créer. Dans cet exemple, il n’y a que trois champs (lignes 11-21, 22-28 et 29-35). Chaque champ comprend des informations de base sur ce qu’est le champ, un identifiant unique pour celui-ci et une description, ainsi que quelques options, le cas échéant.
Ensuite, la ligne 39 affiche les métaboîtes et la ligne 41 s’accroche au script que nous avons initialement téléchargé pour le faire fonctionner.
LE RÉSULTAT?
Alors à quoi cela ressemble-t-il ? Eh bien, dans la fenêtre de l’éditeur, vous obtiendrez quelque chose comme ceci :
Nous avons donc maintenant établi comment construire les métaboîtes et utiliser les différents types de champs pour collecter les informations nécessaires. Maintenant, nous devons l’afficher sur le front-end.
AFFICHAGE DES INFORMATIONS
Les informations sont maintenant stockées pour chaque message dans la base de données. Mais à moins que nous ne l’appelions, il restera simplement dans la base de données et restera inutile. Pour afficher les informations, nous devons utiliser la fonction get_post_meta, qui récupère la méta de la publication pour une publication donnée à partir de la base de données.
Pour prendre cet exemple simple, nous pouvons utiliser la fonction get_post_meta dans trois instances distinctes pour extraire chaque information que nous avons stockée (la priorité, la description et la résolution).
<h2>Priority: <?php echo get_post_meta( $post->ID, 'twpb_alert_priority', true ); ?></h2>
<h3>Description</h3>
<?php echo get_post_meta( $post->ID, 'twpb_alert_description', true ); ?>
<h3>Resolution</h3>
<?php echo get_post_meta( $post->ID, 'twpb_alert_resolution', true ); ?>
Dans chaque cas, nous passons l’ID de publication et l’ID unique de chaque élément de métadonnées que nous souhaitons récupérer (rappelons que nous les avons définis dans la fonction précédente).
Cela donnera alors un résultat sur le front-end dans le sens de ceci :
ALLER PLUS LOIN
Cela a été un exemple très simple, mais avec juste un peu d’imagination, vous pouvez voir à quel point cela peut être puissant. Pour revenir à mon exemple original du système de suivi des commandes, ce plugin a été utilisé pour enregistrer les informations du patient (nom, adresse, date de naissance) et les informations de la commande (articles commandés, prix, numéro de commande, transporteur, numéro de suivi, notes de commande et les documents de commande, tels que les factures). Associé à Notifications par email, cela peut être un outil très complet.
Une fois que vous commencez à découvrir des fonctionnalités puissantes comme celle-ci qui sont intégrées à WordPress, ce qui peut sembler un peu écrasant au début, vous réalisez à quel point cela peut être puissant. Espérons que des outils comme Boîtes méta personnalisées vous encouragera à plonger et à commencer à développer vos propres sites hautement personnalisés.