Les types de publication personnalisés sont l'un des éléments clés à saisir si vous souhaitez créer des sites WordPress flexibles de qualité professionnelle.

Ce que font les types de publication personnalisés vous permet d'ajouter votre propre type de données. cela peut être un article, une chanson, un film ou des milliers d'autres choses. Les types de publication personnalisés vous permettent de classer vos données selon vos besoins, ce qui vous permet de mieux contrôler le comportement de votre site.

Dans cet article, je vais vous montrer comment créer un type de publication de film personnalisé pour une base de données de films.

Pourquoi utiliser des types de publication personnalisés?

Pour créer un site Web de film, nous devons créer une base de données. Le faire sans les types de publication personnalisés serait extrêmement délicat et risquerait de se heurter à notre installation WordPress existante. Cependant, notre type de publication personnalisé aura son propre menu d'administration et sa propre page de modification, si nous le souhaitons, nous pourrions même ajouter des taxonomies personnalisées à la page avec les noms et les propriétés correspondant au projet.

Les types de publication personnalisés sont ce qui amène WordPress d'une plateforme de blog à un CMS complet. Ils nous donnent la liberté de mettre en place notre site Web de film sans aucun piratage méchant.

Créer notre type de post de film

Dans cet article, je présenterai tout le code nécessaire pour créer un type de publication personnalisé, puis nous passerons en revue chaque ligne pour que vous puissiez apprendre ce que fait chaque pièce et la personnaliser selon vos besoins.

Voici le code complet qui est ajouté à votre fichier functions.php :

add_action( 'init', 'register_movie' );function register_movie() {$labels = array('name' => 'Movies','singular_name' => 'Movie','add_new' => 'Add New','add_new_item' => 'Add New Movie','edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie','search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash','menu_name' => 'Movies',);$args = array('labels' => $labels,'hierarchical' => false,'description' => 'Here you will add all the movies for the database','supports' => array( 'title', 'editor', 'thumbnail' ),'taxonomies' => array( 'genre', 'movies', 'year' ),'public' => true,'show_ui' => true,'show_in_menu' => true,'menu_position' => 5,//'menu_icon' => the image link here,'show_in_nav_menus' => true,'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,'query_var' => true,'can_export' => true,'rewrite' => true,'capability_type' => 'post');register_post_type( 'movie', $args );}

Comme vous pouvez le voir, une partie assez importante du code sert à créer un type de publication personnalisé, mais si vous le comprenez, vous pourrez obtenir ce code et l'adapter à vos projets. Dans la première ligne, nous associons la fonction avec notre type de publication personnalisé à l' init , ce qui signifie que notre fonction se déclenchera lorsque WordPress le fera afin que nous l'ayons toujours dans notre tableau de bord:

add_action( 'init', 'register_movie' );

Les labels

Dans la ligne suivante, nous commençons par déclarer le nom de notre fonction et une variable avec tous les libellés qui seront associés à notre type de post pour que tout puisse être personnalisé.

La première chose que nous déclarons dans les étiquettes est le nom de notre type de message personnalisé, au pluriel et au singulier:

'name' => 'Movies','singular_name' => 'Movie',

Dans les deux lignes suivantes, nous devons spécifier notre nouveau texte Add (si nous souhaitons le changer) et ensuite nous ajoutons Add New Movie pour que, lorsque nous ajoutons un nouveau film, nous ayons une expérience personnalisée au lieu d'ajouter un film et titre disant "Ajouter un nouveau message".

'add_new' => 'Add New','add_new_item' => 'Add New Movie',

Après les étiquettes pour la création d'un nouveau film, nous devons définir les étiquettes pour l'édition, le nouveau texte d'élément (par défaut, New Post / New Page) et définir le texte de la publication:

'edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie',

Maintenant, dans les étiquettes, nous passons aux fonctionnalités de recherche dans le fichier wordpress admin et à nos étiquettes pour cela. Nous devons définir des étiquettes lorsque nous recherchons des films, lorsque aucun résultat n'est trouvé et également lorsque aucun résultat n'est trouvé dans la corbeille:

'search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash',

Le dernier label parle de lui-même, ici nous devons placer le nom que nous voulons que le type de poste personnalisé ait dans le menu UI, dans ce cas nous ne faisons que coller avec "Movies":

'menu_name' => 'Movies',);

Les arguments

Maintenant, nous devons passer à nos arguments, pour cela j'ai créé une autre variable qui contiendra tous les arguments, je l'ai appelé args.

Le premier argument qu'il demande est les étiquettes et tout ce que nous avons à faire est de pointer sur la variable de libellé que nous venons d'examiner, comme ceci:

$args = array('labels' => $labels,

Dans la ligne suivante, nous devons définir si notre type de publication sera hiérarchique ou non (comme les publications). Dans mon cas, je ne veux pas que les films soient hiérarchiques, alors je les mets au faux. La ligne suivante est juste une description facultative du type de poste.

'hierarchical' => false,'description' => 'Here you will add all the movies for the database',

La ligne suivante est importante. ici nous devons spécifier ce que notre type de poste personnalisé prendra en charge, quels champs il aura. Les options pour ce champ sont les suivantes:

  • 'Titre'
  • 'éditeur'
  • 'auteur'
  • 'la vignette'
  • 'extrait'
  • "rétroliens"
  • 'Les champs personnalisés'
  • 'commentaires'
  • 'révisions'
  • 'attributs de page'
  • 'post-formats'

Dans mon cas et pour mon type de message, je veux seulement qu'il prenne en charge le titre, l'éditeur WYSIWYG , une vignette et des commentaires et que je dois ajouter un tableau dans cette ligne, comme ceci:

'supports' => array( 'title', 'editor', 'thumbnail','comments' ),

Dans la ligne suivante, nous devons spécifier quelles taxonomies il va utiliser, et puisque nous allons créer des taxonomies personnalisées, ce sont celles qui seront ajoutées dans cette ligne:

'taxonomies' => array( 'genre', 'actors', 'year' ),

Les trois lignes suivantes ont trait à la visibilité du type de poste dans la zone d'administration et tout ce que je fais est de définir tout cela comme étant vrai:

'public' => true,'show_ui' => true,'show_in_menu' => true,

Ensuite, nous passons à la position du menu dans lequel le type de message doit apparaître. Ici, nous avons également beaucoup d'options à choisir parmi:

  • 5 - Postes inférieurs
  • 10 - Ci-dessous les médias
  • 15 - Liens ci-dessous
  • 20 - Pages ci-dessous
  • 25 - Ci-dessous les commentaires
  • 60 - Sous le premier séparateur
  • 65 - Ci-dessous les plugins
  • 70 - Utilisateurs inférieurs
  • 75 - Outils ci-dessous
  • 80 - Sous les paramètres
  • 100 - Sous le deuxième séparateur

Dans mon cas, je voulais que les films apparaissent immédiatement après les messages, alors je mets le menu à 5, comme ceci:

'menu_position' => 5,

Dans la ligne suivante, nous nous occupons de l'icône, nous pouvons définir notre propre icône ou la laisser vide et nous obtiendrons l'icône des messages à la place, la ligne suivante s'occupant de tout ce que ce type de message doit faire apparaître dans nos menus .

'menu_icon' => //the image link here,'show_in_nav_menus' => true,

Dans les 3 lignes suivantes, nous ajoutons les capacités du type post; Nous définissons d'abord si nous voulons que le type de publication soit interrogé sur le frontal, puis nous décidons si nous voulons que les résultats du type de publication soient exclus des recherches et que nous décidions enfin si nous voulons une archive pour le type de publication de film:

'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,

Dans la ligne suivante, nous définissons la variable de requête pour notre type de message et cela définira l'apparence de l'URL. Pour cette option, nous avons trois paramètres possibles: nous pouvons la définir sur true et accéder au film en utilisant /? Movie = name_of_movie; nous pouvons le définir sur une chaîne pour que le film dans l'URL soit remplacé par tout ce que nous voulons, comme "show" et que nous devions utiliser /? show = name_of_movie pour atteindre le même film; la dernière option consiste à la définir sur false et à rendre impossible l’atteinte d’un film à l’aide de query_var. Dans mon cas, et avec cette dernière option en tête, je mets ma requête var à true pour que nous puissions y accéder avec query_var de movie:

'query_var' => true,

Dans la ligne suivante, nous déciderons si nous voulons que les films soient exportables, puis nous choisissons le slug pour ce type de post. Dans mon cas, je me suis contenté de true pour avoir "movie" comme slug, mais vous pouvez choisir n'importe quelle chaîne comme slug et vous avez beaucoup d'options, ce paramètre est vaste.

'can_export' => true,'rewrite' => true,

La dernière ligne de nos arguments est l'endroit où nous définissons le type de capacité de notre article et comme je veux qu'il ait exactement les mêmes que les messages normaux, je lui ai simplement donné la valeur de post, comme ceci:

   'capability_type' => 'post');

Nos étiquettes et arguments sont faits, il ne reste plus qu'à enregistrer notre type de message et la fonction register_post_type prend deux paramètres, le premier est le nom de notre type de message personnalisé (20 lettres au maximum et aucune majuscule). ou des espaces) et le second est les arguments pour le type post et dans celui-ci, nous allons simplement placer notre variable args:

    register_post_type( 'movie', $args );}

Notre type de post est créé et complètement fonctionnel et tout ce dont vous avez besoin pour le montrer dans vos pages est un peu de magie wp_query .

Derniers mots

J'espère que vous pouvez voir pourquoi tant de personnes utilisent des types de publication personnalisés dans WordPress.

Cet article était destiné à vous faire comprendre le processus de création d'un type de message personnalisé et à vous donner un point de départ pour créer vos propres types de publication personnalisés.

Image / vignette en vedette, image personnalisée par ATOMIC Hot Links, via Flickr.