Mon code de CPT pour mon WordPress

Qu'est-ce qu'un Custom Post Type (CPT) ?

Un CPT est une entité de contenu personnalisée que vous pouvez définir pour répondre à des besoins spécifiques. Par exemple :

Les CPT sont stockés dans la base de données WordPress (table wp_posts) avec un identifiant unique (post_type). Ils permettent d'organiser le contenu de manière plus structurée et adaptée à votre projet.


Les CPT sont utiles pour :


Comment créer un Custom Post Type ?

Il existe deux façons de créer un CPT dans WP: manuellement (via le code) ou via un plugin.

Création manuelle d’un CPT

Les CPT sont généralement enregistrés dans le fichier functions.php du thème utilisé. La fonction principale utilisée est register_post_type()

Exemple:

function register_livre_post_type() {
    $labels = array(
        'name'               => __('Livres', 'textdomain'),
        'singular_name'      => __('Livre', 'textdomain'),
        'menu_name'          => __('Livres', 'textdomain'),
        'add_new'            => __('Ajouter un livre', 'textdomain'),
        'add_new_item'       => __('Ajouter un nouveau livre', 'textdomain'),
        'edit_item'          => __('Modifier le livre', 'textdomain'),
        'new_item'           => __('Nouveau livre', 'textdomain'),
        'view_item'          => __('Voir le livre', 'textdomain'),
        'search_items'       => __('Rechercher des livres', 'textdomain'),
        'not_found'          => __('Aucun livre trouvé', 'textdomain'),
    );

    $args = array(
        'labels'             => $labels,
        'public'             => true, // Accessible publiquement
        'has_archive'        => true, // Archive disponible (ex. : domaine.com/livres/)
        'supports'           => array('title', 'editor', 'thumbnail', 'excerpt'), // Fonctionnalités activées
        'show_in_menu'       => true, // Visible dans le menu d’administration
        'menu_position'      => 5, // Position dans le menu
        'menu_icon'          => 'dashicons-book', // Icône du menu
        'rewrite'            => array('slug' => 'livres'), // URL personnalisée
        'taxonomies'         => array('category', 'post_tag'), // Taxonomies associées
    );

    register_post_type('livre', $args);
}
add_action('init', 'register_livre_post_type');