Posts personnalisés

Par défaut, nous l'avons vu, WordPress offre différents types de post et de contenu :

  • 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('produits', array( 'labels' => array( 'name' => _x('Produits', 'Nom générique'), 'singular_name' => _x('Produit', 'Au singulier'), 'menu_name' => __('Produits'), 'all_items' => __('Tous les produits'), 'view_item' => __('Voir les produits'), 'add_new_item' => __('Ajouter un nouveau produit'), 'add_new' => __('Ajouter'), 'edit_item' => __('Editer le produit'), 'update_item' => __('Modifier le produit'), 'search_items' => __('Rechercher un produit'), '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 addaction('init', 'createpost_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 (affichage du contenu)

Pour afficher cette collection, dans le modèle de votre thème en PHP, il faudra faire une requête à WordPress et stocker son résultat dans une variable.

Par exemple:

$products = new WP_Query('post_type=produits');

Ensuite, toujours dans le modèe du thème en PHP, il faudra boucler parmi les résultats obtenus et imprimer print ceux-ci dans une page:

while ( $products->have_posts() ) : $products->the_post(); print the_title(); // titre du produit the_excerpt(); // extrait de la description du produit endwhile;

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

register_post_type

Advanced Custom Fields (ACF)

Secure Custom Fields (SCF) UPDATE du 12 octobre 2024
Advanced Custom Fields devient Secure Custom Fields.

SCF (anciennement ACF) est une extension WordPress facilitant grandement la création de nouveaux types de posts. Dans l'onglet extensions (plugins) du tableau de bord, recherchez Advanced Custom Fields. Il est possible que l'extension ne soit pas encore installée, si tel est le cas, recherchez la dans la librairie d'extensions.

Installez et activez là.

Extension Secure Custom Fields

Création de nouveaux types de posts

Une fois l'extension installée, un onglet SCF 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 en cliquant sur le deuxième onglet du haut nommé Post Types et ensuite sur le bouton Add New.

Add new post type

Remplissez minimalement les trois infos obligatoires (celle indiquées par un *)

  1. Plural Label nom au pluriel des posts
  2. Singular Label nom au singulier des posts
  3. Post Type Key nom pour accéder au post dans le code PHP (donc SANS d'accent, de caractère spécial ou d'espace)

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 type de post.

Une des options les plus populaires est de changer l’icône du nouveau type de post. Pour ce faire, il faut cliquer sur Advanced Settings et naviguer dans l'onglet Visibility

Lorsque vous avez terminé: cliquez sur le bouton Save Changes

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

Affichage dans les menus de navigation

Il est possible d'ajouter les nouveaux types de posts dans le menu de navigation de votre site. 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érez 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èles

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 */ Export

Secure Custom Field (SCF) permet d'exporter la structure de ses posts personnalisés afin de pouvoir les importer sur un autre site. Pour suivre la démarche, veuillez vous référer à cette page, section export.