Les custom post type dans wordpress

Ici un bref rappel de la fonction de création d’un custom post type dans wordpress(type de contenu autre que page ou article, pour un besoin particulier) :

Creation du custom post

Dans le fichier functions.php, on insère la fonction suivante :

/* CUSTOM POST TYPE */
add_action('init', 'publication_register');

function publication_register() {
    $labels = array(
        'name' => 'Publications',
        'singular_name' => 'publication',
        'add_new' => 'Ajouter ',
        'add_new_item' => 'Ajouter une publication',
        'edit_item' => 'Editer la publication',
        'new_item' => 'Nouvelle publication',
        'all_items' => 'Toutes les publications',
        'view_item' => 'Voir la publication',
        'search_items' => 'Recherche publication',
        'not_found' => 'Aucune publication trouvée',
        'not_found_in_trash' => 'Aucune publication dans la corbeille',
        'parent_item_colon' => '',
        'menu_name' => 'Publications'
    );
    $args = array(
        'exclude_from_search' => true, //camoufler la page dans la recherche
        'labels' => $labels,
        'public' => true,
        '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' => 'publication', 'with_front' => false),
    );
    register_post_type('publication', $args);
}

Mon custom post ici s’appelle publication, à adapter en fonction de ses besoins; c’est dans les arguments de la fonction que l’on va indiquer si l’on veut inclure ou non ces custom post dans la recherche avec ‘exclude_from_search’ => true, si l’on veut y associer des taxos , catégories ou mots clés communs aux article : ‘taxonomies’ => array(‘category’, ‘post_tag’), et enfin avec support, on indique les blocs que l’on veut voir apparaitre dans la page d’édition:   ‘supports’ => array(‘title’, ‘editor’, ‘thumbnail’, ‘custom-fields’), (le bloc titre, parfois inutile selon les cas, l’éditeur de texte, pareil, l’image à la une et les metabox)

Cette fonction va créer un nouvel onglet « publications » dans le bakoffice.

Creation du template de page

Ensuite les étapes sont les suivantes: on crée un fichier publications.php avec l’en tete et la boucle suivantes:

<?php
/*
 * Template Name: Publications
 */

?>

et un exemple de boucle:

       <?php
        $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
        $custom_args = array(
            'post_type' => 'publication',
            'posts_per_page' => 5,
            'post_status' => ' published',
            'order_by' => 'post_date',
            'order' => 'DESC',
            'paged' => $paged
        );

        ;
        ?>                      <?php $custom_query = new WP_Query($custom_args); ?>
        <?php if ($custom_query->have_posts()) : ?>
    <?php while ($custom_query->have_posts()) : $custom_query->the_post(); ?>


                <header class="page-header">

<h3 class="entry-title">  <a href="<?php the_permalink(); ?>" title="<?php the_title() ?>"><?php the_title(); ?></a></h3>

                </header>


<div class="entry-content">
        <?php the_excerpt(); ?>

</div>




            <?php endwhile;
            ?>
        <?php endif; ?>
        <?php wp_reset_postdata(); ?>

Creation de la page single-custom

Pour afficher cette page, il faut maintenant créer une page dans le backoffice de wordpress, et lui donner comme modèle de page  » publications ».

Au clic sur l’un des extraits d’articles, on est renvoyé vers l’article « publication »Si l’on veut styliser cette page single -publication, il va falloir la créer: single-publication.php.L’intérieur peut etre le même que single.php,pas de boucle particulière ici.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.