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 eureka est venu lorsqu’un client m’a demandé de lui construire un système de suivi des commandes. Historiquement, il prenait les commandes de matériel médical auprès des représentants et faisait tous ses documents manuellement. Il passait ensuite toute la journée au téléphone, répondant aux appels des représentants pour passer de nouvelles commandes ou vérifier l’état d’une commande existante.

Eh bien, il cherchait à changer tout cela en créant un site Web sur lequel il pouvait saisir toutes ses commandes, et ses clients pouvaient 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 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 hébergeraient alors les informations pour chaque commande, à afficher sur le front-end, pour que ses clients les visualisent.

Je ne reviendrai pas sur 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 que 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 se prêtait pas à l’enregistrement de ces commandes, car il ne dispose pas de zones individuelles pour toutes les petites informations qui formaient la commande, telles que le nom du patient, le numéro de commande et le représentant de la commande qui aurait besoin de être appelé à la fois sur le front-end du site et dans les courriels adressés au représentant au dossier.

C’est là que les méta-boîtes personnalisées sont entrées en jeu. 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, même si l’éditeur de publication a une énorme boîte pour le contenu de votre message, 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 je contrôlais pleinement l’écran de saisie des données, comme vous le verrez ci-dessous.

BOÎTES META PERSONNALISÉES

Méta-boîtes personnalisées est un script qui rend le processus de création de ces méta-boîtes 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 dates et les éditeurs WYSIWYG) et fait tout le codage pour vous, de sorte que tout ce que vous avez à faire est de dicter le type de chaque champ, et il le sera apparaissent comme par magie.

L’inclure dans votre thème ou plugin est un processus très simple. Il vous suffit de télécharger les fichiers depuis le Dépôt GitHub et copiez-les dans votre propre structure de dossiers de thèmes ou de plugins. Je recommande de mettre les fichiers dans une bibliothèque ou comprend un dossier, 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 choisi, tout ce que vous avez à faire pour les «activer» et les rendre disponibles pour une utilisation est d’inclure init.php à partir de votre plugin. Par exemple, dans mon exemple, la fonction suivante a été incluse dans le fichier principal du plugin 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 fichier 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 que vous pouvez choisir incluent:

  • Titre (pour organiser vos méta-boîtes dans le tableau de bord)
  • Texte (petit, moyen et grand)
  • Sélecteur de date (horodatage standard ou UNIX)
  • Devise
  • Zone de texte (petite et grande)
  • Menu déroulant
  • Boutons radio (en ligne et standard)
  • Case à cocher (unique 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 meilleur dans chaque cas.

Pour vous dé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 de l’article 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, comme les listes à puces et le formatage du texte).

La fonction suivante est tout le code qui y parvient: 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étabox et la ligne 6 définit les types de publication personnalisés sur lesquels afficher ces métaboxes. Puisqu’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 souhaite 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 le champ, un identifiant unique pour celui-ci, une description, ainsi que certaines options, le cas échéant.

Ensuite, la ligne 39 fait afficher les métaboxes, et la ligne 41 se connecte au script que nous avons téléchargé à l’origine, pour le faire fonctionner.

LE RÉSULTAT?

Alors, à quoi cela ressemble-t-il? Eh bien, dans la fenêtre de l’éditeur, vous vous retrouverez avec quelque chose comme ceci:

Nous avons donc maintenant établi comment créer les métaboxes et utiliser les différents types de champs pour collecter les informations nécessaires. Nous devons maintenant l’afficher sur le front-end.

AFFICHER LES INFORMATIONS

Les informations sont maintenant stockées pour chaque publication dans la base de données. Mais à moins que nous y fassions appel, 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 publication pour une publication donnée 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 élément d’information que nous avons stocké (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 transmettons l’ID de publication et l’ID unique de chaque élément de métadonnées que nous voulons 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:

Affichage des métadonnées personnalisées

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 d’origine 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 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émêler de puissantes fonctionnalités comme celle-ci 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 Méta-boîtes personnalisées vous encouragera à plonger et à commencer à développer vos propres sites hautement personnalisés.

Share: