Custom post type

Un « Custom Post Type » (ou type de contenu personnalisé) est une fonctionnalité puissante de WordPress qui vous permet de créer et de gérer des types de contenu spécifiques, en plus des articles (Posts) et des pages (Pages) par défaut. Les Custom Post Types sont couramment utilisés pour organiser et afficher différents types de contenus sur un site web, en leur attribuant des structures et des formats de publication spécifiques.

// Custom post type + taxonomies

function lfg_register_projet_post_type()
{

	// Déclaration du custom post type
	$args = array(
		'label' => esc_html__('Projets'),
		'labels' => array(
			'name' => esc_html__('Projets'),
			'singular_name' => esc_html__('Projet'),
			'menu_name'           => __('Projets'),
			'add_new_item'        => __('Ajouter un nouveau projet'),
			'add_new'             => __('Ajouter'),
			'view_item'           => __('Voir le projet'),
			'view_items'          => __('Voir les projets'),
			'edit_item'           => __('Editer le projet'),
			'update_item'         => __('Modifier le projet'),
			'search_items'        => __('Rechercher un projet'),
			'not_found'           => __('Aucun projet trouvé !'),
			'not_found_in_trash'  => __('Aucun projet trouvé dans la corbeille !'),
		),
		'public' => true,
		'publicly_queryable' => true,
		'show_ui' => true,
		'show_in_rest' => true,
		'show_in_nav_menus' => true,
		'rest_namespace' => 'wp/v2',
		'has_archive' => true,
		'capability_type' => 'post',
		'rewrite' => array('slug' => 'projets'),
		'menu_position' => 4,
		'menu_icon' => 'dashicons-layout',
		'show_in_menu' => true,
		'show_in_nav_menus' => true,
		'supports' => array('title', 'editor', 'thumbnail', 'revisions'),
		'description' => __('Les projets'),
		'taxonomies' => ['post-projets'],
		'template' => array(
			array('core/paragraph', array(
				'placeholder'	=> 'Description du projet'
			)),
			array(
				'core/columns',
				array(),
				array(
					array(
						'core/column',
						array(),
						array(
							array('core/post-featured-image')
						)
					),
					array(
						'core/column',
						array(),
						array(
							array('core/heading', array(
								'placeholder'	=> 'Titre',
								'level'			=> 3
							)),
							array('core/paragraph', array(
								'placeholder'	=> 'Description'
							))
						)
					)
				)
			)
		)
	);
	register_post_type('post-projet', $args);
}

// Déclaration de la Taxonomie
$labels = array(
	'name' => 'Catégories de projets',
	'singular_name' => 'Catégorie de projets',
	'all_items' => 'Toutes les catégories de projets',
	'edit_item' => 'Éditer la catégorie de projets',
	'view_item' => 'Voir la catégorie de projest',
	'update_item' => 'Mettre à jour la catégorie de projets',
	'add_new_item' => 'Ajouter une catégorie de projets',
	'new_item_name' => 'Nouvelle catégorie de projets',
	'search_items' => 'Rechercher parmi les catégories de projets',
	'popular_items' => 'Catégories de projets les plus utilisés'
);

$args = array(
	'labels' => $labels,
	'public' => true,
	'show_ui' => true,
	'show_in_rest' => true,
	'hierarchical' => true,
);


register_taxonomy('projets', 'post-projet', $args);

add_action('init', 'lfg_register_projet_post_type');