M é m o - l a b .
Les Custom Post Types, notés dans ce cours CPT, sont des types de contenu personnalisés. Ils représentent une entité correspondant à un type de contenu à part entière. A la base, WordPress est un outil permettant de construire des blogs. Dans ce contexte, les articles, intégrés par défaut comme contenus de base, prennent tout leur sens. Cependant, si je veux intégrer d’autres contenus à mon site ayant une structure différente ou abordant une thématique différente, les CPT seront la solution adéquate pour segmenter mes contenus en entités singulières.
Notion abordée : register_post_type().
Les CPT peuvent être intégrés dans le fichier functions.php. Pour cela, il suffit de se rendre sur le générateur de code générateur de cpt et de placer le contenu généré dans le fichier functions.php. Le code ci-dessous est un exemple issu du générateur de cpt adapté pour un type de contenu pour des tutos. Les labels correspondent aux textes qui vont apparaitres dans la partie admin. L’argument ‘show_in_rest’ placé à true a été rajouté pour que l’éditeur Gutenberg soit intégré à ce type de contenus. Le cpt s’appelle <b>tutos</b>, il correspond au premier paramètre de la fonction register_post_type().
La compréhension par le code :
Dans functions.php
<?php
// Register Custom Post Type
function tutos_post_type() {
$labels = array(
'name' => _x( 'Tutoriels', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'Tutoriel', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'Tutoriels', 'text_domain' ),
'name_admin_bar' => __( 'Tutoriel', 'text_domain' ),
'archives' => __( 'Item Archives', 'text_domain' ),
'attributes' => __( 'Item Attributes', 'text_domain' ),
'parent_item_colon' => __( 'Parent Item:', 'text_domain' ),
'all_items' => __( 'All Items', 'text_domain' ),
'add_new_item' => __( 'Add New Item', 'text_domain' ),
'add_new' => __( 'Add New', 'text_domain' ),
'new_item' => __( 'New Item', 'text_domain' ),
'edit_item' => __( 'Edit Item', 'text_domain' ),
'update_item' => __( 'Update Item', 'text_domain' ),
'view_item' => __( 'View Item', 'text_domain' ),
'view_items' => __( 'View Items', 'text_domain' ),
'search_items' => __( 'Search Item', 'text_domain' ),
'not_found' => __( 'Not found', 'text_domain' ),
'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ),
'featured_image' => __( 'Featured Image', 'text_domain' ),
'set_featured_image' => __( 'Set featured image', 'text_domain' ),
'remove_featured_image' => __( 'Remove featured image', 'text_domain' ),
'use_featured_image' => __( 'Use as featured image', 'text_domain' ),
'insert_into_item' => __( 'Insert into item', 'text_domain' ),
'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ),
'items_list' => __( 'Items list', 'text_domain' ),
'items_list_navigation' => __( 'Items list navigation', 'text_domain' ),
'filter_items_list' => __( 'Filter items list', 'text_domain' ),
);
$args = array(
'label' => __( 'Tutoriel', 'text_domain' ),
'description' => __( 'Site Tutoriels.', 'text_domain' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'thumbnail', 'comments', 'revisions' ),
'taxonomies' => array( 'category', 'post_tag' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'page',
'show_in_rest' => true
);
register_post_type( 'tutos', $args );
}
add_action( 'init', 'tutos_post_type', 0 );
?>
Rqe : pour activer les chps additionnels dans un cpt, il faut ajouter ‘custom-fields’ dans supports.