logo blog

Comment créer un custom post type sur WordPress ?

Outils web

par Thomas Gueguen le 24 mai 2016

WordPress possède actuellement deux types de publications par défaut : les pages et les articles. Cependant, il est possible d’en créer de nouveaux, que l’on peut nommer librement. Cela peut notamment servir à lister du contenu sur un site web. On va donc voir ensemble ce qu’est un custom post type et comment en créer un nouveau.

Qu’est ce qu’un custom post type ?

On pourrait traduire le terme  « post type » par « type de contenu ». Cela sert à lister du contenu personnalisé et fonctionne de la même manière que les articles WordPress. Par exemple, on peut s’en servir pou afficher une liste de produits, une liste de films ou encore une liste d’événements.

On peut trouver les custom post types que l’on a ajouté dans le back-office de WordPress, au niveau du menu sur la gauche. Ici sur la photo, j’ai ajouté le custom post type « Films ».

menu-cpt

 

Créer un custom post type manuellement

Je vais maintenant vous expliquer comment créer son propre custom post type manuellement.

Pour ce faire, il suffit de trouver dans son thème, ou son thème enfant, le fichier functions.php. Ensuite il va falloir ajouter le morceau de code ci-dessous.

function cpt_init() {
$labels = array(
'name' => 'films',
'singular_name' => 'films',
'add_new' => 'Ajouter un film',
'add_new_item' => 'Ajouter un film',
'edit_item' => 'Editer un film',
'new_item' => 'Nouveau film',
'all_items' => 'Tous les films',
'view_item' => 'Voir film',
'search_items' => 'Chercher film',
'not_found' => 'Aucun film trouvé',
'not_found_in_trash' => 'Aucun film trouvé dans la corbeille',
'parent_item_colon' => '',
'menu_name' => 'Films'
);
$args = array(
'labels' => $labels,
'description' => 'Description du post type film',
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'films' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt')
);
register_post_type('films', $args );
}
add_action('init', 'cpt_init');

Cette fonction créé le custom post type et affiche ce-dernier dans le back office de WordPress.

La première partie permet de créer le custom post type et toutes les phrases complémentaires qui vont avec. Ici j’ai pris l’exemple d’une liste de films. Si par exemple, on voulait afficher une liste de produits, il suffirait de remplacer tous les occurences ‘films’ par ‘produits’.

La deuxième partie de la fonction fait office de réglages du custom post type. On peut par exemple mettre une description pour expliquer rapidement l’utilisation de ce-dernier, ou encore indiquer si l’on veut que ce-dernier soit affiché dans le menu du back-office de WordPress.

Après avoir enregistré son fichier, l’onglet doit désormais s’afficher dans le menu sur le back-office. En cliquant sur le nom du custom post type, on arrive alors sur une page semblable à celle des articles ou des pages où il est maintenant possible d’ajouter de nouveaux items.

film-bo

Comment afficher le contenu des custom post types sur une page web ?

Après avoir renseigné ses items, il faut maintenant les afficher sur son site internet. Pour ce faire, il faut retourner dans les fichiers de notre thème et ouvrir le fichier dans lequel on souhaite afficher notre contenu.

Pour publier nos items, une boucle personnalisée, comme celle-ci, doit être créée :

<?php
$args = array(
'post_type'=> 'films',
'posts_per_page' => -1,
'orderby' => 'date',
'order' => 'DESC'
);
$wp_query = new WP_Query( $args );
while ( $wp_query->have_posts() ) :
$wp_query->the_post(); ?>
<h1> <?php the_title(); ?> </h1>
<p> <?php the_content(); ?> </p>
<?php endwhile;
wp_reset_query();
?>

Cette boucle va permette de récupérer les items et de les afficher selon les réglages que l’on a choisi : nombre d’items par page, ordre, etc.

Le réglage le plus important est le ‘post_type’ car c’est ici que l’on indique dans quel custom post type le contenu doit être récupéré. Ici, vu qu’on veut afficher notre liste de films, on va tout simplement mettre ‘post_type’ => ‘films’. Ensuite, n’oubliez pas de régler le nombre d’items par page, -1 voulant dire qu’on les affiche tous.

Après avoir tout enregistré, le contenu de vos items devraient alors s’afficher sur votre page web.


L'auteur

Thomas Gueguen

Développeur web

2 Commentaires


forum auto
il y a 7 ans


Comme d’habitude, article toujours intéressant.

Dicke
il y a 8 ans


je suis débutant en wordpress actuéllemnt je suis en train de créer un théme pour le site web sur lequel je travaille. Plus avoir une compréhension approfondie de wordpress j’ai décidé de tout faire sans plugin. De ce fait j’ai rencontré quelques difficultés sur les taxonomy et les custom field. J’aimerai avoir un support sur ces points. Je vous remercie d’avance pour la clarté de vos articles.


Laisser une réponse

 


bouton up
0 Partages
Partagez
Tweetez
Partagez