Le blog.

Créer des types de contenu, taxonomies et metaboxes dans WordPress.

Dans cette première vidéo-tutoriel WordPress, j’explique comment utiliser la librairie Cuztom Helper afin d’étendre les fonctionnalités de base WordPress. Nous aborderons plusieurs concepts, comme la création de nouveaux types de contenu, comment leur assigner des nouvelles taxonomies, mettre en place des metaboxes et y insérer des nouveaux champs.

Cette vidéo est la première de la série WordPress Cuztom, série de tutoriels qui expliquera l’utilisation de cette librairie fort pratique afin de transformer une simple installation WordPress blog en un CMS avancé. La finalité de cette série est de créer un système de bibliothèque personnelle pour stocker et afficher sur votre site WordPress une liste de livres et d’auteurs.


Sous les apparences simplistes de WordPress se cache un moteur puissant vous permettant, avec quelques outils et un peu de développement, d’obtenir un système de gestion de contenu avancé bien plus poussé qu’un simple blog.

Ajouter un nouveau type de contenu


$book = register_cuztom_post_type(
  'Livre',
  array(
    'menu_icon' => get_template_directory_uri() . '/img/book.png'
  )
);

La fonction register_cuztom_post_type() permet d’ajouter très rapidement un nouveau type de contenu dans WordPress. Vous pouvez passer en deuxième paramètre une array d’arguments, la liste complète étant disponible ici. Par exemple, vous pouvez définir la position du nouveau type de contenu dans le menu d’administration avec menu_position, ou encore activer certaines spécificités des types de contenu (attributs, commentaires…) avec supports.

Ajouter une taxonomie

$book->add_taxonomy('Genre');

register_cuztom_post_type instancie une classe à la variable utilisée. Une méthode add_taxonomy permet d’ajouter de nouvelles taxonomies au type de contenu fraîchement créé. Tout comme la fonction register_cuztom_post_type, cette fonction accepte une longue liste d’arguments disponible ici. Par exemple, il est possible de définir si une taxonomie doit posséder une logique de hierarchie (un terme de taxonomie peut être enfant ou parent d’autres termes) avec l’argument hierarchical => true.

Notez qu’une autre syntaxe est possible afin de définir des taxonomies sur les types de contenu par défaut de WordPress (article, page). Par exemple, $taxonomy = register_cuztom_taxonomy(‘Difficulty’, ‘post’)) ajoutera une taxonomie « Difficulty » aux articles (posts) de WordPress.

Ajouter des metaboxes (« boîtes de champs ») et des champs

$book->add_meta_box(
  'book_info',
  'Information sur ce livre',
  array(
    array(
      'name' => 'publication_date',
      'label' => 'Date de publication',
      'type' => 'date',
      'description' => 'Description qui va sous le titre',
      'explanation' => 'Explication qui va sous le champs',
    ),
    array(
      'name' => 'cover',
      'label' => 'Couverture du livre',
      'type' => 'image',
      'description' => 'Envoyez une image de couverture du livre'
    ),
    array(
      'type' => 'post_select',
      'name' => 'author',
      'label' => 'Auteur du livre',
      'args' => array(
        'post_type' => 'author',
        'posts_per_page' => -1
      )
    )
  )
);

Le premier paramètre est l’ID (identifiant) de la metabox qui nous sera utile lorsque l’on voudra récupérer les données des champs de cette metabox. S’ensuit le titre de la boîte et une array contenant une liste de champs.

La liste des types et l’usage des champs est disponible ici. Texte court, texte long, date, date et heure, image, relation avec d’autres contenus, éditeur WYSIWYG sont autant de champs existants dans la librairie Cuztom.

Et si je veux ajouter des metaboxes et des champs à un type de contenu basique de WordPress (page, post)?
$box = add_cuztom_meta_box(
  'meta_box_id',
  'Book Info',
  'post',
  array(
    'name' => 'author',
    'label' => 'Author',
    'description' => 'Just a little description',
    'type' => 'text'
  )
);

Tout simplement! L’utilisation est la même qu’avec add_meta_box, à une différence près: notez le 3ème paramètre faisant référence au type de contenu auquel ajouter la metabox et les champs. Dans l’exemple ci-dessus, une metabox Book Info a été ajoutée aux types de contenu « Articles ».

Nous avons donc abordé les 3 fonctionnalités basiques, mais puissantes, de la librairie Cuztom afin de créer des nouveaux types de contenu et leur assigner des nouveaux champs. Dans le prochain épisode de cette série de tutoriels, nous verrons comment profiter des données stockées et les afficher proprement dans notre thème.

A très vite!

18 commentaires ont été rédigés, ajoutez le votre.

  1. aragala Répondre

    Merci, tutoriel on ne peut plus claire!!!!
    Une question: Comment installer la librairie une question?

  2. madeinbaiona Répondre

    Bonjour,

    Merci pour tous ces excellents tutos !

    Pouvez vous me donner une piste pour basculer le calendrier « Date picker » en francais, ainsi que pour traduire les submits.

    Jérémy

  3. Rétrolien: 7 astuces pour un développement Gravity Forms sur-mesure

  4. Rétrolien: Intercepter les données des formulaires Contact Form 7 dans WordPress

  5. Vincent Quirin Répondre

    Salut Pierre !
    J’ai besoin d’aide pour l’utilisation de Cuztom Helper. Je m’en suis d’abord servi une première fois en local sans aucun souci. Maintenant je tente de l’utiliser en ligne pour la réalisation d’un site et impossible de le faire fonctionner !
    Voici les étapes que j’ai suivi :
    * je télécharge la librairie, je décompresse, j’envoie tout via ftp dans un dossier ‘inc’ situé dans mon thème enfant
    * dans mon fichier functions.php, je rajoute les 2 lignes include
    * après avoir créer un fichier ‘types_taxo…’ (qui fait donc partie des 2 includes), je rajoute dedans une ligne de type register_cuztom_post_type et là rien ne se passe, rien n’apparait dans mon tableau de bord…
    As tu une idée ?
    Merci !

    • Pierre Répondre

      Salut Vincent,

      Difficile à dire comme ça, il faudrait des messages d’erreur pour voir ce qui ne va pas. As-tu WP_DEBUG à TRUE dans ton wp-config ?

      • Vincent Quirin Répondre

        J’ai passé la valeur a true et effectivement un magnifique message d’erreur, les include ne fonctionnent pas du tout en fait. Est-ce qu’on peut échanger directement par messagerie pour aller plus vite ? Merci

        • Pierre Répondre

          Non.

          • Vincent Quirin

            Pas de souci :) J’ai testé avec un fichier bidon et une fonction bidon à l’intérieur
            Voici mon include : include(‘/inc/cuztom-master/test.php’);
            Et voici le message d’erreur : Failed opening ‘/inc/cuztom-master/test.php’ for inclusion (include_path=’.:/usr/share/php’) in /…………./wp-content/themes/gt3-wp-pure-child/functions.php on line 17

    • Pierre Répondre

      C’est un problème de chemin, teste avec « inc/ » au lieu de « /inc/ » peut-être ?
      Ou un truc du genre :
      include get_template_directory() . ‘/inc/cuztom-master/test.php’;

      • Vincent Quirin Répondre

        Bizarre, ca marche avec mon fichier bidon sans le /, par contre avec les fichiers de cuztom helper ca ne marche pas : il mouline pour afficher ma page, et il mouline dans le tdb wordpress et n’arrive pas à afficher la liste des fichiers de mon thème enfant !

      • Vincent Quirin Répondre

        J’ai trouvé ca : require_once( get_stylesheet_directory() . ‘/my_included_file.php’ );
        Toujours pareil ca fonctionne très bien avec mon fichier bidon par contre ca plante dès que je pointe sur le fichier cuztom.php du plugin !

      • Vincent Quirin Répondre

        J’ai envie de dire que c’est le contenu de cuztom.php qui met le bazar : quand je copie tout dans mon fichier bidon ca plante… Sur le github, il y a ce commentaire : Note: If you’re using Custom Post Types, don’t forget to flush rewrite rules on activation.
        Ca ne pourrait pas être ca ?

        • Pierre Répondre

          Quelle erreur as-tu quand tu pointes vers cuztom.php ?

          • Vincent Quirin

            J’ai mis ces 2 lignes là :
            require_once( get_stylesheet_directory() . ‘/cuztom-master/cuztom.php’ );
            require_once( get_stylesheet_directory() . ‘/cuztom-master/test.php’ );
            A priori ca fonctionne, j’arrive bien à créer un custom post type via le test.php, et mes pages s’affichent normalement
            Je trouve bien le custom post type dans mon tdb
            Par contre dans mon thème editor (j’utilise wp editor), il ne veut plus m’afficher les fichiers du thème choisi, il se met par défaut sur style.css et impossible de changer
            Et j’ai aussi des choses bizarres avec la barres sur le coté : quand je survole apparence par exemple, le sous menu n’apparait plus, il faut que je clique sur Apparence pour faire apparaitre les catégories (ca vaut pour toutes les rubriques avec sous menu). Peut etre un pb de comptatibilité avec wp editor ? as tu un autre plugin qui soit bien pour l’édition de code ?

Laisser un commentaire