Custom Post Type & Taxonomies

Apprenez à coder sur WordPress.

Comment trouver un développeur web en 2023. freelance

« Mon thème entièrement adapté à mes besoins.« 

Création de Custom Post Type (CPT)

WordPress intègre nativement deux types de posts : les articles et les pages.

Les articles peuvent être classés par catégories mais aussi par étiquette.

Les pages n’ont pas de moyens de classement.

Dans cette leçon, nous allons dépasser ça et adapter WordPress à nos besoins spécifiques:

  • Les « custom post types » sont de nouveaux genres de contenus que vous pouvez ajouter sur WordPress pour ordonner des informations spécifiques.
  • Les taxonomies, classent ces contenus en catégories.
  • Tandis que les metaboxes ajoutent des détails de tout type au type de post spécifié.

En unissant ces éléments, vous façonnez la structure et l’apparence de votre site WordPress.

Nous pouvons le faire car WordPress a implémenté dans son codage tout un système permettant à tous développeurs et audacieux de venir s’agripper et de déclarer des instructions à déclencher au bon moment, ou à altérer une réponse déjà prévue par WordPress.

Tout est en PHP, mais si vous avez eu du mal dans la leçon précèdente, pas de panique !

vous n’avez que 3 éléments à comprendre et les voici :

Les fonctions : C’est la base de toute action en PHP, elle est toujours accompagnée de parenthèses () pour définir ou non des variables, qu’on appelle arguments. Ensuite l’ensemble de la fonction se retrouve entre les balises {}.

function creer_cpt_formation() {

}

Les Hooks: Nous allons ajouter une action à une fonction déjà présente.

Le principe est enfantin, il me suffit de dire “add action”, de dire à quelle action native je veux m’agripper, et quelle fonction je vais ajouter :

add_action('init', 'ma_fonction');

En français, cette nouvelle action déclenche la fonction “ma_fonction” au moment de l’initialisation du thème WordPress.

OK? Maintenant, utilisons une fonction qui existe déjà dans wordpress et qui permet d’enregistrer un nouveau post type, et devinez comment elle s’appelle ? register_post_type !

On peut créer et personnaliser certains paramètres très utiles !

function creer_cpt_formation() {

 register_post_type('formation', array(

 'labels' => array(

 'name' => __('Formations', 'mon_theme'),

 'singular_name' => __('Formation', 'mon_theme'),

 ),

 'public' => true,

 'has_archive' => true,

 'rewrite' => array('slug' => 'formation'),

 ));

}

add_action('init', 'creer_cpt_formation'); // sa place n’a pas d’importance, soyez organisé !

Je vais simplement modifier les noms et paramètres, ainsi que le text_domain remplacé ici par “mon_theme”, l’intérêt est pour WordPress d’éviter les collisions avec d’autres plugins ou thèmes qui utiliserait le même nom que votre CPT.

register_post_type() : Enregistre un nouveau type de contenu.

Labels : Définissent le nom et le nom singulier du CPT dans l’interface d’administration.

public : Rend le CPT visible dans l’interface.

has_archive : Permet au CPT d’avoir une page d’archive.

rewrite : Personnalise le slug du CPT dans l’URL.

Création et Gestion des Taxonomies

Objectif : Créer des taxonomies personnalisées pour organiser les CPT.

function ajouter_taxonomie_type() {

 register_taxonomy('type', 'produit', array(

 'label' => __('Type de Produit', 'textdomain'),

 'rewrite' => array('slug' => 'type-de-produit'),

 'hierarchical' => true,

 ));

}

add_action('init', 'ajouter_taxonomie_type');

register_taxonomy() : Enregistre une nouvelle taxonomie.

hierarchical : Détermine si la taxonomie est comme des catégories (true) ou des tags( étiquettes) (false).

Sous Taxonomies et Termes

Objectif : Créer des sous-taxonomies pour une organisation détaillée.

function ajouter_sous_taxonomies_formations() {
    $parent_term = 'Formations'; // Nom de la catégorie parent
    $parent_slug = 'formations'; // Slug de la catégorie parent
    $taxonomy = 'categorie'; // Remplacez 'categorie' par le slug réel de votre taxonomie

    // Vérifie si le terme parent existe déjà, sinon l'ajoute
    $parent_term_id = term_exists($parent_term, $taxonomy)['term_id'];
    if (!$parent_term_id) {
        $parent_term_id = wp_insert_term($parent_term, $taxonomy, array('slug' => $parent_slug))['term_id'];
    }

    // Tableau des sous-catégories à ajouter
    $sous_categories = array(
        'Html' => 'HTML et le markup',
        'PHP' => 'Scripting avec PHP',
        'CSS' => 'Styles avec CSS',
        'JS' => 'JavaScript pour le dynamisme',
        'Wordpress' => 'Utiliser WordPress',
    );

    // Boucle pour ajouter chaque sous-catégorie
    foreach ($sous_categories as $nom => $description) {
        wp_insert_term($nom, $taxonomy, array(
            'description' => $description,
            'parent' => $parent_term_id
        ));
    }
}

add_action('init', 'ajouter_sous_taxonomies_formations');

wp_insert_term() : Ajoute un nouveau terme à une taxonomie existante.

parent : Attribue le terme à une sous-taxonomie.

🧭 La suite ?

Vous avez créé votre CPT et/ou taxonomies. Vous êtes prêt pour le grand bain !

La prochaine leçon vous emmènera plus loin dans la personnalisation, en se concentrant sur des aspects avancés comme la création de meta-boxes et leur intégration.