WordPress est livré avec cinq types d’articles par défaut : post
page
attachment
revision
, et menu
.
Lorsque vous développez votre plugin, vous pouvez avoir besoin de créer votre propre type de contenu spécifique : par exemple, des produits pour un site de commerce électronique, des devoirs pour un site de formation en ligne ou des films pour un site de critiques.
En utilisant les Custom Post Types, vous pouvez enregistrer votre propre type de post. Une fois qu’un type de post personnalisé est enregistré, il obtient un nouvel écran d’administration de haut niveau qui peut être utilisé pour gérer et créer des posts de ce type.
Pour enregistrer un nouveau type de post, vous utilisez la fonction register_post_type().
Nous vous recommandons de mettre les types de post personnalisés dans un plugin plutôt que dans un thème. Cela garantit que le contenu utilisateur reste portable même si le thème est modifié.
L’exemple minimal suivant enregistre un nouveau type de post, Produits, qui est identifié dans la base de données comme wporg_product
.
function wporg_custom_post_type() {register_post_type('wporg_product',array('labels' => array('name' => __('Products', 'textdomain'),'singular_name' => __('Product', 'textdomain'),),'public' => true,'has_archive' => true,));}add_action('init', 'wporg_custom_post_type');
Expansion du code source completRéduction du code source complet
Veuillez consulter la page de référence de register_post_type() pour la description des arguments.
Avertissement :
Vous devez appeler register_post_type()
avant le crochet admin_init
et après le crochet after_setup_theme
. Un bon hook à utiliser est le init
action hook.
Naming Best Practices #Naming Best Practices
Il est important que vous préfixiez vos fonctions et identifiants de type de post avec un préfixe court qui correspond à votre plugin, thème ou site web.
Avertissement :
Veillez à ce que votre identifiant de type de post personnalisé ne dépasse pas 20 caractères car la colonne post_type
de la base de données est actuellement un champ VARCHAR de cette longueur.
Avertissement :
Pour assurer la compatibilité future, n’utilisez pas wp_ comme identifiant – il est utilisé par WordPress core.
Avertissement :
Si votre identifiant est trop générique (par exemple : « product
« ), il peut entrer en conflit avec d’autres plugins ou thèmes qui ont choisi d’utiliser ce même identifiant.
Note :
La résolution des identifiants de type de message en double n’est pas possible sans désactiver l’un des types de message en conflit.
Top
URLs #URLs
Un type de post personnalisé obtient son propre slug dans la structure URL du site.
Un post de type wporg_product
utilisera par défaut la structure URL suivante : http://example.com/wporg_product/%product_name%
.
wporg_product
est le slug de votre type de post personnalisé et %product_name%
est le slug de votre produit particulier.
Le permalien final serait : http://example.com/wporg_product/wporg-is-awesome
.
Vous pouvez voir le permalien sur l’écran d’édition de votre type de post personnalisé, comme pour les types de post par défaut.
Un slug personnalisé pour un type de message personnalisé #A Custom Slug for a Custom Post Type
Pour définir un slug personnalisé pour le slug de votre type de message personnalisé, tout ce que vous devez faire est d’ajouter une paire clé => valeur à la rewrite
clé dans le tableau register_post_type()
arguments.
Exemple:
function wporg_custom_post_type() {register_post_type('wporg_product',array('labels' => array('name' => __( 'Products', 'textdomain' ),'singular_name' => __( 'Product', 'textdomain' ),),'public' => true,'has_archive' => true,'rewrite' => array( 'slug' => 'products' ), // my custom slug));}add_action('init', 'wporg_custom_post_type');
Expansion du code source completRéduction du code source complet
Ce qui précède aboutira à la structure URL suivante : http://example.com/products/%product_name%
Avertissement :
L’utilisation d’un slug générique comme products
peut potentiellement entrer en conflit avec d’autres plugins ou thèmes, essayez donc d’en utiliser un qui soit plus spécifique à votre contenu.
Note :
Contrairement aux identifiants de type de post personnalisés, le problème de slug dupliqué peut être résolu facilement en changeant le slug de l’un des types de post en conflit.
Si l’auteur du plugin a inclus un appel apply_filters()
sur les arguments, cela peut être fait de manière programmatique en surchargeant les arguments soumis via la fonction register_post_type()
.
.