register_post_type()
Définition : register_post_type() déclare un type de publication dans WordPress en précisant son identifiant et ses comportements. Cette fonction permet de créer des contenus structurés réutilisant les interfaces, requêtes et autorisations natives.
Terminologie
Terme officiel : register_post_type()
Autres appellations : Déclaration de CPT
À quoi cela sert
Elle configure un type métier en définissant sa visibilité, les fonctions de l’éditeur, l’accès REST, l’archive, les capacités et d’autres paramètres. Il s’agit d’un enregistrement en mémoire à chaque requête, pas d’une création de table.
Comment cela fonctionne
L’appel doit intervenir au moment init ou après, lorsque les API du Core sont disponibles. Les objets du type portent la clé post_type dans la table des publications. Certaines options doivent être cohérentes entre interface et accès public.
Dans quel contexte l’utiliser
À utiliser dans un plugin lorsque l’on construit un contenu professionnel structuré, notamment une collection documentaire ou un catalogue administrable.
Exemple concret
Un site de formation veut distinguer des ressources pédagogiques de ses articles de blog.
Exemple de code commenté
<?php
add_action( 'init', function () {
register_post_type( 'atoolpha_guide', array(
'label' => 'Guides',
'public' => true,
'show_in_rest' => true,
'supports' => array( 'title', 'editor', 'excerpt' ),
'has_archive' => true,
'rewrite' => array( 'slug' => 'guides' ),
) );
} );
Explication pas à pas de l’exemple
Le type atoolpha_guide est déclaré à init. supports rend disponibles le titre, l’éditeur et l’extrait ; show_in_rest facilite l’éditeur de blocs. Le préfixe atoolpha limite le risque de collision avec un autre type.
Résultat attendu
Un menu de gestion « Guides » peut être disponible dans l’administration et les contenus utilisent les règles déclarées pour leur consultation publique.
Précautions et limites
Éviter d’enregistrer un type avant init ; vérifier le nom choisi, les permissions de publication et les capacités. Ne pas appeler flush_rewrite_rules() à chaque chargement.
À ne pas confondre
register_post_type() définit le type ; wp_insert_post() sert à créer une publication appartenant à ce type.
Termes associés
- Custom Post Type (CPT)
- register_taxonomy()
- Rewrite Rules
