Créer Custom Post Type WordPress

Anonymous

Donne moi le code PHP complet pour créer un Custom Post Type et commente les options

GPT WP Expert logo
GPT WP Expert

Créer un Custom Post Type (CPT) dans WordPress implique l'utilisation de la fonction register_post_type(). Voici un exemple de code PHP pour créer un CPT avec des commentaires expliquant chaque option :

php
1<?php 2// Hook into the 'init' action 3add_action('init', 'create_custom_post_type'); 4 5function create_custom_post_type() { 6 // Set up labels for the Custom Post Type 7 $labels = array( 8 'name' => _x('Books', 'Post Type General Name', 'text_domain'), 9 'singular_name' => _x('Book', 'Post Type Singular Name', 'text_domain'), 10 'menu_name' => __('Books', 'text_domain'), 11 'parent_item_colon' => __('Parent Book', 'text_domain'), 12 'all_items' => __('All Books', 'text_domain'), 13 'view_item' => __('View Book', 'text_domain'), 14 'add_new_item' => __('Add New Book', 'text_domain'), 15 'add_new' => __('Add New', 'text_domain'), 16 'edit_item' => __('Edit Book', 'text_domain'), 17 'update_item' => __('Update Book', 'text_domain'), 18 'search_items' => __('Search Book', 'text_domain'), 19 'not_found' => __('Not Found', 'text_domain'), 20 'not_found_in_trash' => __('Not found in Trash', 'text_domain'), 21 ); 22 23 // Set other options for Custom Post Type 24 $args = array( 25 'label' => __('books', 'text_domain'), 26 'description' => __('Book news and reviews', 'text_domain'), 27 'labels' => $labels, 28 // Features this CPT supports in Post Editor 29 'supports' => array('title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields'), 30 // You can associate this CPT with a taxonomy or custom taxonomy. 31 'taxonomies' => array('genres'), 32 /* A hierarchical CPT is like Pages and can have 33 * Parent and child items. A non-hierarchical CPT 34 * is like Posts. 35 */ 36 'hierarchical' => false, 37 'public' => true, 38 'show_ui' => true, 39 'show_in_menu' => true, 40 'show_in_nav_menus' => true, 41 'show_in_admin_bar' => true, 42 'menu_position' => 5, 43 'can_export' => true, 44 'has_archive' => true, 45 'exclude_from_search' => false, 46 'publicly_queryable' => true, 47 'capability_type' => 'post', 48 'show_in_rest' => true, // Important for Gutenberg to be able to edit 49 ); 50 51 // Registering your Custom Post Type 52 register_post_type('books', $args); 53} 54?>

Explications des Options :

  • labels: Ce tableau contient les étiquettes du CPT, utiles pour l'interface utilisateur dans le tableau de bord de WordPress.
  • supports: Définit les fonctionnalités du CPT dans l'éditeur (ex: titre, éditeur, extrait).
  • taxonomies: Les taxonomies que vous voulez associer avec ce CPT (par exemple, catégories, tags).
  • hierarchical: Si true, le CPT est hiérarchique comme les pages, sinon, il est non hiérarchique comme les articles.
  • public: Rend le CPT visible dans l'interface utilisateur.
  • show_ui: Affiche l'interface pour gérer ce CPT dans l'administration.
  • show_in_menu: Affiche le CPT dans le menu d'administration.
  • `menu
GPT WP Expert logo
GPT WP Expert

_position`: La position dans le menu d'administration.

  • can_export: Permet l'exportation de ce CPT.
  • has_archive: Si true, permet un archive pour ce CPT.
  • exclude_from_search: Si true, exclut ce CPT des résultats de recherche.
  • publicly_queryable: Si true, permet des requêtes publiques sur ce CPT.
  • capability_type: Définit le type de capacité nécessaire pour éditer ce CPT, généralement 'post' ou 'page'.
  • show_in_rest: Si true, rend le CPT accessible via l'API REST de WordPress, ce qui est important pour l'éditeur Gutenberg.

Notes Complémentaires :

  • Hook 'init' : Ce code est attaché au hook init, qui est appelé lorsque WordPress a terminé de charger mais avant que n'importe quelle entête ne soit envoyée.
  • Text Domain : 'text_domain' est utilisé pour l'internationalisation. Vous devriez remplacer cela par le domaine de texte de votre thème ou plugin.
  • Taxonomies : Assurez-vous que la taxonomie que vous associez ('genres' dans cet exemple) est également enregistrée.

Ce code devrait être placé dans le fichier functions.php de votre thème (ou un thème enfant pour éviter de perdre les modifications lors des mises à jour) ou dans un plugin spécifique.