Poster ses customs posts type sur une page dédiée

Poster ses customs posts type sur une page dédiée

Dans wordpress, une fois qu’on a crée un custom post type, étant donné qu’ils ne sont pas considérés comme des articles et qu’on ne peut pas par défaut les lier à une catégorie, il va falloir créer une page pour les lister.
Voici le code à insérer dans le fichier functions.php.

Première étape: création d’un custom post type (ici formation)

add_action('init', 'formation_register');
function formation_register() {
$labels = array(
'name' => 'Formations',
'singular_name' => 'formation',
'add_new' => 'Ajouter ',
'add_new_item' => 'Ajouter une formation',
'edit_item' => 'Editer la formation',
'new_item' => 'Nouvelle formation',
'all_items' => 'Toutes les formations',
'view_item' => 'Voir la formation',
'search_items' => 'Recherche formation',
'not_found' => 'Aucun formation trouvée',
'not_found_in_trash' => 'Aucune formation dans la corbeille',
'parent_item_colon' => '',
'menu_name' => 'Formations'
);
$args = array(
'exclude_from_search' => true, //camoufler la page dans la recherche
'labels' => $labels,
'public' => false,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => true,
'has_archive' => true,
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields'),
'taxonomies' => array('category', 'post_tag'),
'rewrite' => array('slug' => 'formation', 'with_front' => false),

);
register_post_type('formation', $args);

}

Deuxième étape: création du fichier php qui listera nos custom posts

On crée en dur un fichier php qui sera notre modèle de page ‘formation’ . A l’intérieur,  on crée une nouvelle loop dédiée, qui va nous ramener nos custom posts type:

$args = array( 'post_type' => 'formation', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
the_title();
echo '<div>';
the_content();
echo '</div>';
endwhile;

Ensuite, dans l’admin on crée une notre page en lui donnant comme modèle de page ‘formation‘ que l’on vient de créer. La page vous listera donc tous vos custom posts ‘formation‘.