Posts personnalisés

4

Par défaut, WordPress offre différentes collections:

  • Articles
  • Médias
  • Pages
  • Commentaires.

Bien que pratiques, il est parfois souhaitable d'en créer des nouvelles.

Déclaration manuelle

La déclaration d'un nouveau type de posts doit se fait via le fichier functions.php.

Par exemple:

function create_post_type() {
  register_post_type('superheros', 
    array(
      'labels' => array(
        'name' => _x('Superheros', 'Nom générique'),
        'singular_name' => _x('Superhero', 'Au singulier'),
        'menu_name' => __('Superheros'),
        'all_items' => __('Tous les superheros'),
        'view_item' => __('Voir les superheros'),
        'add_new_item' => __('Ajouter un nouveau superhero'),
        'add_new' => __('Ajouter'),
        'edit_item' => __('Editer le superhero'),
        'update_item' => __('Modifier le superhero'),
        'search_items' => __('Rechercher un superhero'),
        'not_found' => __('Non trouvé'),
        'not_found_in_trash' => __('Non trouvé dans la corbeille'),
      ),
      'supports' => array(
        'title', 
        'editor', 
        'author', 
        'thumbnail', 
        'custom-fields',
      ),
      'show_in_rest' => true,
      'public' => true,
      'has_archive' => true,
    )
  );
}

add_action('init', 'create_post_type');

Dans cet exemple, avec 'labels' => array( ... ) indique à Wordpress comment nommer ce nouveau post dans différents scénarios.

'supports' => array( ... ) indique les champs disponibles pour ce type de post dans le tableau de bord.

Tandis que add_action('init', 'create_post_type'); indique à Wordpress d'appeler cette fonction créant le nouveau type de post à son instanciation.

Dès ce moment, la nouvelle collection devrait être disponible dans le tableau de bord.

Utilisation manuelle

Pour afficher cette collection, il faudra faire une requête à Wordpress et stocker son résultat dans une variable.

Par exemple:

$superheros = new WP_Query('post_type=Superheros');

Ensuite, il faudra boucler parmi les résultats obtenus:

while ($superheros->have_posts()) : $superheros->the_post();

Les fonctions de base, tel que: the_title() ou the_content() retourneront dans le contexte de cette boucle les informations associées à notre collection de superhéros.

Custom Post Type UI

Est une extension WordPress facilitant grandement la création de nouveaux types de posts. Dans l'onglet extensions (plugins) du tableau de bord, recherchez Custom Post Type UI et repérez l'extension créée par WebDevStudios.

Installez et activez là.

Création de nouveaux types de posts

Une fois l'extension installée, un onglet CPT UI devrait être visible dans la barre latérale servant de menu.

À partir de cet onglet, il est possible de créer de nouveaux Types de posts en cliquant sur (Add/Edit Post Type).

Remplissez les trois champs de base:

  1. Slug nom pour accéder au post dans le code
  2. Plural Label nom au pluriel des posts
  3. Singular Label nom au singulier des posts

Optionnellement, vous pouvez remplir les différents champs affichés après les trois premiers pour plus de contrôle sur l'affichage de votre nouveau typde de post.

Une des option les plus populaires est de changer l'icône du nouveau type de post. Pour ce faire, il faut allez presque à la fin des champs supplémentaire et populer un champ nommé Menu Icon.

Cliquez sur Populate missing labels based on chosen labels et appuyez sur Add Post Type.

Un nouveau type de post devrait automatiquement apparaître dans le menu latéral du tableau de bord de WordPress.

Affichage dans les menus

Il est possible d'ajouter les nouveaux types de posts dans un menu personnalisé. Cependant, cette option est désactivée par défaut.

Pour l'activer:

  1. Allez dans Apparence -> Menus.
  2. En haut à droite de la page, repérer le bouton Options de l'écran et cliquez dessus.
  3. Dans le panneau ouvrant, cochez les types de posts ayant la permission d'être inclus dans les menus.

Création de modèle

Afin de pouvoir sélectionner un modèle (template) pour un type de post personnalisé, il est nécessaire de spécifier un modèle compatible.

Pour ce faire, dans le fichier PHP d'un modèle, il faut ajouter dans les commentaires de début de page une propriété intitulée Template Post Type et lui spécifier les types de posts compatibles.

Par exemple, pour qu'un modèle soit compatible avec les posts de base et les posts personnalisés de type partenaire, il faut écrire:

/**
 * Template Name: Partenaire
 * Template Post Type: post, page, partenaire
 */
Donnez votre opinion
sur les notes de cours sur cette page.
Merci d'avoir partagé ton opinion 😎
Pssst, c'est 💯 anonyme