J’ai écrit un tutoriel complet pour réaliser un thème WordPress de A à Z.
Il est plus récent et parle aussi des Custom Post Type et Custom Taxonomy. Du coup, je vous invite à aller le lire.
WordPress vient d’annoncer une Release Candidate pour la version 3. J’ai pour ma part installé et mis en prod la version Beta 2 qui, ma foi, est très stable. Si vous comptez l’installer, allez-y! Les mises à jour se font comme les WP actuellement, c’est à dire automatiquement. Et le système de template pour les thèmes est identique donc vos thèmes marcheront sans souci! Le seul souci est qu’il n’y a pas de version française encore mais bon, c’est uniquement pour l’admin qui est vraiment très simple en anglais.
Nouveautés WordPress 3
Dans les nouveautés, il y a :
- choisir son login et son mot de passe : au lieu d’avoir “admin” et un mot de passe généré automatiquement, on peut les choisir soi-même.
- un nouveau thème par défaut, bourré de nouvelles fonctions et qu’on va customiser dans ce tutoriel
- custom background : un outil dans l’admin pour pouvoir choisir un fond pour le site. Si vous développez des thèmes vous même, ça vous est inutile.
- Multi-sites! En fait, WordPress et WordPress µ ont fusionné : il est donc possible avec 1 seule installation WP de mettre en place autant de blogs différents que l’on veut. Par exemple : css.bbxdesign.com pour un blog de CSS, inspiration.bbxdesign.com pour un blog d’inspiration etc.
- Custom Post Types
- Custom Taxonomies
Je vais développer ces 2 derniers points car ils sont les plus intéressants.
Custom Post Types : vos propres Posts et Pages
Si vous utilisez WP, vous savez qu’il y a 2 grand types d’éléments pour poster :
- Posts : ce sont les billets du blogs rangés chronologiquement. Ils peuvent être dans des Catégories et avoir des Tags.
- Pages : ce sont des pages contenant du contenu fixe et intemporel. Il n’y a pas de notion de chronologie, ni de catégorie, ni de tags. Il y a uniquement une notion de hiérarchie (relation page parent/page enfant).
Si vous avez un blog, ces 2 types d’éléments sont parfaitement suffisants. Vous créez des billets avec les Posts et vous ajoutez une page “A propos” et “Contact” avec les Pages.
Mais imaginons qu’en plus de ça, vous voulez une catégorie Portfolio qui regroupe vos plus beaux travaux, avec un screenshot, une description et quelques infos sur le client. Comment faire ? Vous pouvez créer des Posts que vous classerez dans une catégorie “Portfolio”. Mais c’est non seulement fastidieux à mettre en place dans votre thème mais c’est aussi fastidieux à gérer dans l’admin.
On va donc créer un autre type de post : les “Projets“. Pour ça, on va utiliser le fichier functions.php.
Une fonction pour customiser l’admin
On va regrouper tout notre code dans une fonction qui sera appelée à l’initialisation de l’admin. Comme ça, lorsqu’on lance l’admin, on activera toutes les fonctions décrites dans my_custom_init :
add_action('init', 'my_custom_init');
function my_custom_init()
{
/* notre code PHP pour rajouter les custom post type */
}Tout le code que je vais écrire maintenant devra être inclus dans la fonction my_custom_init.
Déclarer le Custom Post Type
Maintenant nous allons rajouter l’élément “Projet” dans notre admin :
register_post_type('projet', array(
'label' => __('Projets'),
'singular_label' => __('Projet'),
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
'supports' => array('title', 'author', 'thumbnail')
));Il faut utiliser la fonction register_post_type qui porte bien son nom : elle enregistre un nouvel élément, un nouveau type de Post. Il y a ensuite plusieurs paramètres. Ils n’y sont pas tous parce que beaucoup sont optionnels. J’ai mis les plus importants :
- ‘projet’ correspond au nom du nouvel élément. Il sera utilisé dans les fichiers de template.
- ‘label’ est le nom qu’on retrouvera dans la colonne de gauche de l’admin. Il est préférable de mettre un pluriel.
- ‘singular_label’ est l’équivalent au singulier
- ‘public’ définit si les posts seront publics ou non.
- ‘show_ui’ définit si ce nouvel élément apparaît dans l’admin
- ‘capability_type’ définit si le nouvel élément est identique à un Post classique ou à une Page classique. Ici on veut un titre et une image miniature donc Post. En général, les Posts sont beaucoup plus intéressants car ils ont davantage de fonctions que les Pages.
- ‘hierarchical’ définit si il peut y avoir une hiérarchie (comme pour les Pages). Ici, c’est non car chaque élément est au même niveau.
- ‘supports’ est un array qui définit quels éléments d’un Post normal on veut avoir. Ici je veux juste le titre, l’auteur du Post et une miniature. Il y a pleins d’autres éléments :
- ‘title’
- ‘editor’ (la fenêtre principale de contenu)
- ‘author’
- ‘thumbnail’
- ‘excerpt’
- ‘trackbacks’
- ‘custom-fields’
- ‘comments’
- ‘revisions’ (la sauvegarde automatique de versions passées)
- ‘page-attributes’ (choix de template pour les pages et gestion de la hiérarchie)
Pour avoir les thumbnails dans votre thème, il faut ajouter dans functions.php :
add_theme_support( 'post-thumbnails' );
Merci à benoit pour m’avoir rappelé de mettre cette astuce.
Si vous avez tout bien fait vous devriez voir :

Vous pouvez maintenant créer un nouveau projet en cliquant sur “Add New”
Whaaa, c’est vide! Eh oui : on a juste mis “title”, “author” et “thumbnail”. Et c’est tout ce dont on a besoin! Hop je rajoute un Projet “bbxdesign” avec un screenshot :
Ok c’est cool, j’ai réussi à rajouter un nouveau projet! Ca marche nickel dans l’admin. Sauf que pour l’instant, j’ai rien qui s’affiche dans le blog!
Afficher les Custom Post Type
Sur votre blog (sur la home par exemple), dans la boucle des posts, il y a actuellement les Posts normaux. Mais nous on veut afficher les Projets! Pour ça, il faut faire un query_posts avec comme post_type le mot “projet”. Sur index.php par exemple, mettez :
<?php
$home_paged = (get_query_var('paged'));
$arguments = array(
'post_type' => 'projet',
'post_status' => 'publish',
'paged' => $home_paged
);
query_posts($arguments);
get_template_part( 'loop', 'index' );
?>Le $home_paged est une astuce qui permet de récupérer la valeur de la page courante et ainsi éviter de casser la pagination! Ensuite vient un array d’arguments : post_type en projet, post_status en publish (pour éviter d’afficher les brouillons) et page avec la variable.
Ensuite on fait le query_posts avec ces options puis on appelle la boucle avec get_template_part. Il faut savoir que get_template_part est une nouvelle fonction de WordPress 3 qui permet d’inclure d’autres fichiers php. Ici on appelle le fichier loop.php. C’est d’ailleurs très pratique pour éviter de copier-coller la boucle WP dans plusieurs fichiers.
Si vous ouvrez le fichier loop.php du thème “twentyten”, vous verrez qu’il est vraiment très long. On va tout virer et mettre juste un peu de code pour la home, histoire de vous montrer facilement comment afficher les éléments pour un projet. Nous, tout ce qu’on veut, c’est afficher le titre (c’est à dire le nom du projet), ainsi que la miniature.
<?php while ( have_posts() ) : the_post(); ?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <h2><?php the_title(); ?></h2> <?php the_post_thumbnail(); ?> </div> <?php endwhile; ?>
Donc là, c’est très simple. On met la div avec le bon id et la bonne classe, on met le nom du projet (the_title) et l’image (the_post_thumbnail) et ça donne :
J’ai pris le thème de base “twentyten” et j’ai donc customisé les fichiers index.php et loop.php. La home contient donc des Projets et non pas des Posts. Mais vu que j’ai les 2, je peux faire une page /blog où j’aurais tous mes Posts!
Maintenant vous pouvez ajouter des projets à la volée, virer la sidebar, le header et gérer une partie Blog avec les Posts et une partie Portfolio avec les Projets.
Custom Taxonomy : de nouvelles catégories et de nouveaux tags
Derrière ce nom barbare de “Taxonomy” se cache tout simplement les Catégories et les Tags. Avec WordPress 3, vous pouvez créer d’autres taxonomies. Imaginons qu’avec ce Portfolio vous voulez ajouter 2 choses :
- le type de projet : un logo, un site vitrine, une animation flash….
- les couleurs utilisées
On pourrait utiliser les Catégories et les Tags, mais elles sont déjà utilisées par les Posts pour le Blog! On va donc créer d’autres catégories et d’autres tags, exclusivement pour le Portfolio.
register_taxonomy( 'type', 'projet', array( 'hierarchical' => true, 'label' => 'Type', 'query_var' => true, 'rewrite' => true ) ); register_taxonomy( 'couleur', 'projet', array( 'hierarchical' => false, 'label' => 'Couleur', 'query_var' => true, 'rewrite' => true ) );
On utilise la fonction register_taxonomy. Dans l’ordre on choisit
- le nom de la taxonomie
- l’élément auquel il s’applique (ça peut être ‘post’, ‘page’ ou un post type qu’on a créé, en l’occurence ‘projet’)
- ‘hierarchical’ definit si il y a une relation parent/enfant. Si oui, c’est comme les Catégories. Si non, c’est comme les Tags.
- ‘label’ c’est le nom plus descriptif qui s’affichera dans l’admin
- ‘query_var’ à mettre sur true pour qu’on puisse appeler cette taxonomie dans nos templates
- ‘rewrite’ c’est la chaîne de caractères présente dans les permaliens. Si on met “true”, ça prend la valeur par défaut, c’est à dire le nom de la taxonomie.
(Bien sûr, tout ceci est toujours à mettre dans la fonction my_custom_init commencée tout à l’heure.)
Si vous rechargez l’admin, vous voyez par magie :

J’ai déplacé les blocs “Type” et “Couleur” à gauche pour que ce soit plus lisible. Maintenant vous pouvez ajouter le type “animation flash”, “logo”, “direction artistique”… et les couleurs “vert”, “orange”, “bleu”… Ca ressemble à peu près à ce qui ai fait sur Steaw Web Design (sauf qu’on utilise des sous-catégories).
Afficher les Custom Taxonomies dans le thème
Ok c’est cool, vous avez vos Custom Taxonomies dans l’admin. Maintenant faut les afficher dans le thème! On va reprendre le fichier loop.php de tout à l’heure et rajouter ça :
<?php while ( have_posts() ) : the_post(); ?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <h2><?php the_title(); ?></h2> <?php echo get_the_term_list( $post->ID, 'type', '<p>Type de projet : ', ', ', '</p>' ) ?> <?php the_post_thumbnail(); ?> <?php echo get_the_term_list( $post->ID, 'couleur', '<p>Couleurs : ', ', ', '</p>' ) ?> </div> <?php endwhile; ?>
On utilise la fonction get_the_term_list pour afficher les taxonomies du post courant ($post->ID). C’est dans un paragraphe, et les éléments sont séparés par des virgules. En fait, la taxonomie c’est l’ensemble de la liste (ex: “Couleurs”) et terme c’est chaque élément de la liste (ex: “orange”, “vert”).
Visuellement, ça donne ça :
Vous remarquerez que ça crée des liens pour chaque terme. En cliquant dessus, on arrive à une archive. En local, j’arrive pas à le faire marcher mais ça fonctionne sur mon JukePod pour l’année 2004 par exemple.
Conclusion
Avec les custom post type et les custom taxonomy, vous pouvez créer plusieurs “flux” sur votre site, comme par exemple un blog et un portfolio, sans avoir à mélanger les deux ou à s’embêter avec des sous-catégories.
Par exemple, pour le blog Steaw et le portfolio Steaw, on a du créer 2 WordPress différents avec d’un côté des Posts, des Catégories, des Tags et de l’autre… ben pareil : des Posts, des Catégories, des Tags! On le ferait aujourd’hui, on utiliserait le custom post type Projet pour le Portfolio. Il y a même un gars qui a fait un IMDB avec WordPress 3…





76 commentaires
saidpad le 31 May à 17:58
Merci pour cet article fort intéressant.
Flepi le 31 May à 18:37
Merci pour ces tutoriaux bien traduits et bien expliqués !
y_nk le 1 Jun à 13:40
Merci, c’est super bien expliqué et détaillé. Je cherchais des ressources sur les custom post type, je suis comblé !
y_nk le 1 Jun à 14:15
J’avais une question comme ca en relisant ton post en 2nde fois :
dans les custom post type, est ce qu’on peut définir un autre champ que ceux définis par Post ou Page ? Par exemple, est ce que je peux mettre 2 zones de contenus riches ?
Merci pour tes précisions
Jeremy le 1 Jun à 22:15
@y_nk : je pense pas que tu puisses mettre 2 champs. Essaye de mettre 2 fois “editor” mais je doute fortement que ça puisse marcher.
links for 2010-06-04 le 4 Jun à 22:01
[...] Introduction à WordPress 3 : custom post type et custom taxonomy | bbxdesign (tags: wordpress wordpress3 cms) Socio-Encapsule this: [...]
pulupulu le 7 Jun à 13:17
MON DIEU MAIS C’EST GENIAL !
* applause *
Aym le 8 Jun à 21:50
Chapeau !
Furtif le 15 Jun à 15:14
Dans la même veine (avoir éventuellement plusieurs champs d’édition), peut-on imaginer déjà faire apparaître certains champs personnalisés (où il n’y aurait plus qu’à renseigner la valeur) en fonction du post-type déclaré ?
Je n’ai pas trouvé de docprécise à ce sujet-là mais le custom post type se prêterait à ce genre de hack…
Ayu le 15 Jun à 23:15
Bonjour !
Merci pour cet article, je me suis empressée de tester l’ajout de post types, et c’est super simple grâce à vos explications !
Cependant, il y a quelque chose que je n’arrive pas à faire. Je suis entrain de passer mon site (voir lien sur pseudo) de Spip à wordpress. J’ai créé un nouveau custom post type pour les “quotes” qui apparaissent tout au dessus (seul le dernier publié est affiché). Ce que je souhaite faire est donc afficher 2 types de posts différents dans la même page. Pour cela, j’ai créé un second fichier “loop”, contenant uniquement la boucle “quotes”, et j’appelle ces deux fichiers depuis index.php. Les posts s’affichent bien, mais j’ai l’impression que la pagination de l’une et de l’autre entrent en conflit …
)
Est-ce-que vous pourriez me montrer un exemple de ce que vous feriez dans mon cas ? (je précise que je débute sous WordPress et que je n’ai aucunes prétentions en PHP, au cas où ma question vous semblerait vraiment stupide
frednetick le 16 Jun à 12:58
ça ne marche pas chez moi, il doit y avoir une couillasse dans le pâté… en WP3.0 RC3
frednetick le 16 Jun à 12:59
c’est la taxonomie qui ne marche pas ..
j’ai ça :
add_action('init', 'my_custom_init');function my_custom_init()
{
/* notre code PHP pour rajouter les custom post type */register_post_type('projet', array(
'label' => __('lectures'),
'singular_label' => __('lecture'),
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
'supports' => array('title', 'author', 'thumbnail', 'editor', 'custom-fields')
));
register_taxonomy( 'type', 'lecture', array( 'hierarchical' => false, 'label' => 'Type', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'domaine', 'lecture', array( 'hierarchical' => false, 'label' => 'Domaines', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'annee', 'lecture', array( 'hierarchical' => false, 'label' => 'Année', 'query_var' => true, 'rewrite' => true ) );
}
Il s’agit de mettre en place une revue de presse…
frednetick le 17 Jun à 10:04
J’avais laissé trainer le début de morceau de code que vous indiquiez, ça marche nickel, bravo encore pour la pédagogie, savoir écrire un tutoriel est vraiment une belle compétence !
CHATOUGRi le 18 Jun à 00:28
Comme à chaque mise à jour de WordPress: je suis au début un peu perdu et j’ai l’impression que rien n’a changé. Mais là je découvre un putain d’outil de ouf.
Je fais de la musique, et pour la diffuser sur mon blog je fais un truc ultra fastidieux dans l’éditeur et tout. Idem pour diffuser mes images.
Mais avec les Custom Post Types, je crois que tout ça va changer.
Alors un grand merci pour ce tutoriel super bien expliqué
un TRES GRAND merci !!!
Seebz le 18 Jun à 14:42
Le plugins “CMS Press” permet de faire la même chose à travers une interface.
Toutefois, je me demande comment spécifier un template par défaut pour un “custom post type”.
Si quelqu’un a une idée, je suis preneur
#3 – Du côté des blogs | Riche Idée le 26 Jun à 10:42
[...] Introduction à WordPress 3 : custom post type et custom taxonomy : L’article le plus complet que j’ai pu trouvé sur les nouveaux custom post type sur WordPress 3. [...]
Votre site d’entreprise avec Wordpress 3 | Consultant Webmarketing le 16 Jul à 12:00
[...] détaillerais pas la méthodologie pour l’instant, mais par exemple c’est expliqué sur bbxdesign.com. Vous pouvez alors les champs qui s’y appliquent. Nul besoin pour une offre d’emploi de [...]
[WordPress] Limiter la recherche à un type particulier de billets - Websourcing.fr le 16 Jul à 22:28
[...] en savoir plus sur cette fonctionnalité, lisez le billet de BBX à ce [...]
nico le 25 Jul à 14:32
merci pour ce post c’est bien utile …
par contre …
dans mon interface d’admin alors que j’ai mis ‘thumbnail’ (stricto comme expliqué pour le moment), le bloc “set featured image” n’apparait pas a sur la colonne de droite sous “publier, modifier …etc ” ….
je precise que j’utilise le plugin NextGeneration Gallery
merci de votre retour !!
nico
nico le 25 Jul à 14:35
[... ] du coup, je viens d’esssayer en desactivant le plugin NextGeneration Gallery.
Même résultat je n’ai pas la box “featured image” …
!
No le 3 Aug à 20:27
Juste pile poil le tutoriel que je cherchais, merci
Cependant, même si j’ai suivi à la lettre tout le process, je me retrouve avec une 404 à chaque fois que je demande un de mes custom post…
Voici ma fonction register :
register_post_type('album', array(
'label' => __('Albums'),
'singular_label' => __('Album'),
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => array('slug' => 'albums','with_front' => false),
'supports' => array('title', 'custom-fields', 'thumbnail')
));
Donc par exemple pour mon type de post ‘album’ avec le post ‘tralala’, j’obtiens l’URL : http://www.mondomaine.com/albums/tralala
Et paf 404 !
J’ai lu sur plusieurs sites qu’il fallait passer par la page options > permalink après la création des nouveaux types pour flusher les règles de redirection de WP mais rien n’y fait…
Help please
benoit le 6 Aug à 11:16
pour les thumbnails il faut l’activer dans function.php

add_theme_support( 'post-thumbnails' );cf : http://markjaquith.wordpress.com/2009/12/23/new-in-wordpress-2-9-post-thumbnail-images/
Gérer facilement les custom post type dans Wordpress 3.0 | Wordpress spirit le 13 Aug à 10:26
[...] un lien en français très intéressant provenant de bbxdesign : http://bbxdesign.com/2010/05/31/introduction-a-wordpress-3-custom-post-type-et-custom-taxonomy/ custom post type easy post type wordpress [...]
JB le 16 Aug à 22:17
Merci pour les explications très claires.
Maintenant j’aimerais savoir si on peut lier deux ‘custom post type’. Par exemple:
un post_type ‘FILM’ et un post_type ‘ACTEUR’. Maintenant on pourrait lier plusieurs ACTEUR à un FILM et inversement.
Comme j’ai compris on peut plus ou moins faire ça avec les taxonomies, post_type ‘FILM’ avec taxonomie ‘ACTEUR’, mais dans ce cas là on peut pas avoir des champs custom et des templates pour la taxonomie (style photo, date de naissance,….)
Merci de m’éclairer
Jeremy le 17 Aug à 01:08
Hello JB.
Comment veux-tu les lier ? A l’affichage ?
Lis ce billet où quelqu’un utilise WP3 pour faire un pseudo-IMDB : http://justintadlock.com/archives/2009/06/04/using-custom-taxonomies-to-create-a-movie-database
JB le 17 Aug à 09:59
Salut Jeremy,
Merci pour ta réponse. En fait je suis allé voir sur le IMDB wordpress et là par exemple sur la fiche d’un film (http://popcritics.com/movies/turner-and-hooch), on voit sur la droite, le genre, les acteurs. producteurs,…. En cliquant sur un acteur par exemple, on va voir la listes des films dans lesquels il a joué.
Plutôt que d’afficher cette liste de film, je me demandais si on pouvait arriver sur une fiche du comédien. Et par exemple dans cette fiche on verrait une liste des films dans lesquels l’acteur a joué.
C’est cela que j’appelle un lien entre les customs_post ‘films’ et ‘acteur’
J’espère que c’est plus clair.
manu le 25 Aug à 13:13
Bonjour,
Bravo pour cet article.
Je dois développer un site de randonnées pédestres. Pour chaque balade je dois pouvoir entrer comme critères, par exemple, le massif, la durée, le niveau de difficulté, etc. Je pensais utiliser pour cela le plugin “custom field template” + “custom field search”. j’ai besoin d’avoir un formulaire de recherche pour interroger ces critères.
Est ce que les Custom post types pourraient faire l’affaire ? Est il possible de créer un formulaire de recherche ?
Votre réponse sera déterminante pour moi
Merci de votre aide
WordPress, FrameWork et custom post | bertrandkeller le 26 Aug à 21:44
[...] Introduction à WordPress 3 : custom post type et custom taxonomy [...]
Helium le 30 Aug à 13:19
Vous pouvez effacer mon message, j’ai résolue mon problème, j’avais simplement oublié le wp_reset_query();
Helium le 30 Aug à 13:20
Excellent article, très utile et facile à comprendre.
Merci.
Liens – Nouveautés de WordPress 3 - Darklg Blog le 31 Aug à 20:28
[...] Introduction à WordPress 3 : custom post type et custom taxonomy [...]
glunet le 15 Sep à 11:38
Jérémy, article absolument remarquable !
J’ai un pb avec le plugin Google Sitemaps Generator (version 3.2.4) : il n’incorpore pas les posts créés avec des customs types.
Pourtant, dans le code du plugin, lex taxos st traitées (ligne 2098 de sitemap-core.php) :
//Add custom taxonomy pages
if($this->GetOption("in_tax") && $this->IsTaxonomySupported()) {
mais il n’entre pas dedans alors que par ailleurs les taxonomies ont bien été créées dans functions.php
Dans mon cas :
register_taxonomy( 'vod-themes', 'vod', array( 'hierarchical' => false, 'label' => 'Themes', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'vod-mots-clefs', 'vod', array( 'hierarchical' => false, 'label' => 'Mots-clefs', 'query_var' => true, 'rewrite' => true ) );
Média Moon | Les nouvelles fonctionnalités de wordpress 3 le 27 Sep à 18:27
[...] introduction à wordpress 3 chez bbxdesign (le plus clair et le plus complet) [...]
Ressources pour concepteur de modèle pour Internet le 30 Sep à 00:59
[...] Introduction à WordPress 3 : custom post type et custom taxonomy — Les types personnalisés de contenus permettent de sortir des sentiers battus que sont les billets et les pages en permettant de créer par exemple un type de contenu Petite annonce ou Portfolio avec des champs spécifiques. Les taxonomies personnalisées permettent quant à elles d’aller plus loin que les catégories ou les tags proposés par défaut par WordPress. [...]
Olivier BARTOLI le 23 Oct à 21:26
Mais vu que j’ai les 2, je peux faire une page /blog où j’aurais tous mes Posts!
justement comment procéder pour avoir une page “blog” contenant es derniers articles avec votre méthode ? Ou plutôt comment faire pour avoir un lien vers une url qui pointe vers la ‘page’ de liste de tous les articles (la ‘page’ par défaut de WP). Que faire du loop original ?
Stef le 25 Oct à 21:18
je cherche a créer un custom field “date”
Pouvez-vous m’aider ?
Stef le 25 Oct à 21:59
Je rebondis sur mon commentaire du dessus : en fait je recherche a fairre comme dans le plugin
http://www.wpeasyposttypes.com/ sans passer par ce plugin ( je cherche uniquement a gerer ce custoom field en forme de date …)
Merci encore …
Noé le 28 Oct à 00:46
Bonsoir,
Merci pour cet article mais je bloque sur un problème. J’ai essayé de faire un portofolio qui liste mes créations. Tout marche.
Sauf que je désire me servir des custom post type comme “catégorie”. Une page “portofolio” qui listerait toutes mes créations. Comment faire?
Car là j’ai par exemple:
http://www.site.com/portofolio/1-premiere-creation
mais lorsque j’essaie d’accéder à
http://www.site.com/portofolio/
rien à faire, erreur 404.
J’ai bien vu une manière de le faire via des templates personnalisés et de créer une page en attribuant ce template à cette page, mais cette solution me semble trop “bidouille”, n’existe-t-il pas un autre moyen de le faire?
Glunet le 1 Nov à 13:43
Vous devez partir d’un template. Le renommer (champ “Template name” dans le commentaire de début). Modifier sa boucle interne pour requêter vos custom type. Par exemple :
'VOTRE CUSTOM TYPE',
'post_status' => 'publish',
'paged'=>$paged,
'posts_per_page' => 10
);
query_posts($arguments);
?>
Puis créer une page et affecter ce template à cette page (liste déroulante “Template” à droite du gabarit).
Bon courage,
Gilles
Glunet le 1 Nov à 13:45
Oups, il manque un morceau dans mon commentaire ci-dessus. Voici le code au complet :
'VOTRE CUSTOM TYPE',
'post_status' => 'publish',
'paged'=>$paged,
'posts_per_page' => 10
);
query_posts($arguments);
?>
Glunet le 1 Nov à 13:47
Je le remets une 3e fois sans la balise code qui a mangé le début de mon code ci-dessus :
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
$arguments = array(
‘post_type’ => ‘VOD’,
‘post_status’ => ‘publish’,
‘paged’=>$paged,
‘posts_per_page’ => 10
);
query_posts($arguments);
Noé le 2 Nov à 11:49
Bonjour Glunet,
Je vous remercie pour vos codes à triple ^^ mais, justement, est-il possible d’obtenir un résultat similaire sans passer par un template? Parce que, si j’ai 20 custom types différents (j’exagère!), ça me fera quand même 20 fichiers différents en plus dans mon dossier thème, et 20 pages dans mon dashboard :s
Mais s’il n’y a pas d’autre moyen, je prendrai votre solution! Merci encore.
Glunet le 2 Nov à 14:14
@Noé : 20 custom types !… Vous pouvez toujours le rendre générique en passant le nom du custom-type dans une variable ou autre….. Mais ce n’est qu’une partie du pb…. Je suppose que si vous avez des custom types, c’est que vos types sont différents, donc nécessitent des traitements d’affichage différents….
Noé le 4 Nov à 12:35
20 c’est un peu exagéré effectivement mais j’en ai vers les 6-7. C’est “à cause” des gens avec qui je tiens le site en fait, qui ne s’y connaissent pas forcément beaucoup. Donc, dans le dashboard, c’est plus aisé pour eux d’avoir des “rubriques” différentes pour chaque “catégorie” de publication.
Trangsene le 17 Nov à 11:48
Bonjour, super tuto, j’ai rajouté une custom taxonomy sans problème sur un projet Wordpres.
((
par contre un truc qui m’échappe, c’est que dès que j’active les permaliens avec autre chose que la structure par défaut, les liens appliqués sur les termes de la taxonomy ne marchent plus du tout
Je ne comprends pas où est le problème. Si quelqu’un voulait bien m’éclairer. Merci d’avance.
Trangsene le 17 Nov à 15:38
Ouf j’ai fini par trouver la soluce après avoir perdu des heures là-dessus : http://seanbehan.com/programming/how-to-flush-your-permalink-structure-in-wordpress-when-using-taxonomies-or-wordpress-taxonomies-not-working-instead-i-see-a-404-page/
J’ai du réenregistrer fois mas structure de permaliens dans le back-office pour que ça se décide à fonctionner !
gilles le 30 Nov à 01:55
Merci pour toutes ces explications très claires.
Toute fois je me pose une question dont je ne trouve la réponse nulle part. (je suis bloqué, en fait)
Comment faire cohabiter les custom type et wpml.
Par exemple sur ma page
http://localhost/?post_type=projet,
j’ai la liste de mes projets. Mais maintenant que je les ai traduits avec wpml, je voudrais cette liste dans une autre langue, par exemple en allemand avec l’url
http://localhost/?post_type=projet
Je cherche ça comme un fou et je commence à me dire que ce n’est pas prévu, et que par conséquent je vais devoir me passer des custom type car je veux un site multilangue.
Quelqu’un a mieux à dire, avant que je casse tout ce que j’ai fait ?
Merci
gilles le 30 Nov à 01:57
ah zut je me suis trompé, dans la dernière url j’ai oublié le paramètre de langue (et c’est pour ce paramètre que j’ai écrit cette ligne)
Donc je voulais écrire
http://localhost/?post_type=projet&lang=de
Créer des custom post types avec WordPress | WordPress Channel le 13 Dec à 08:09
[...] Pour les utilisateurs les plus curieux, je vous recommande la lecture de cet excellent article écrit en français (il faut le souligner) : Introduction à WordPress 3 : custom post type et custom taxonomy. [...]
sebc le 7 Jan à 14:49
hello, super tuto.
J’ai crée une custom taxonomy nommé “toto”.
j’ai crée plusieurs posts dans toto.
Sur chacun de ces posts, je voudrais installer une pagination mais celle de WP (previous_post_link et next_post_link) deconne completement. Une idée ?
chaluleau le 10 Jan à 16:28
Bonjour et merci pour ce tuto.
je rencontre un problème toutefois. Quand je place le code dans index, soit il casse toute la mise en page (quand je le mets à la suite des posts, have post…) soit il n’apparaît pas quand je le mets en bas du fichier. je ne sais pas où le placer…
Steffi le 3 Feb à 10:23
Bonjour,
C’est un très bon tutoriel, mais j’aimerai savoir comment fait-on pour avoir une URL : xxxxxxx.com/projet/lecture ?
Merci d’avance !
bruno le 16 Feb à 10:01
@steffi
Il faut utiliser la structure /%category%/%postname% si je comprends bien ta question.
Par contre, quelle différence avec le fait d’utiliser un template spécifique et ne pas créer de custom category ?
Py. le 16 Feb à 18:01
Bonjour,
Un tuto très clair, néanmoins j’ai une erreur quand je veux poster un nouveau projet:
Warning: Cannot modify header information – headers already sent by (output started at /homez.34/xxx/www/xxxx/wp-content/themes/xxx/functions.php:19) in /homez.34/xxx/www/xxxx/wp-includes/pluggable.php on line 890
Si quelqu’un a la solution … Merci d’avance ..
Gilles le 17 Feb à 13:31
@Py
Il faut aller voir à l’endroit du fichier qui fait une sortie écran (functions.php ligne 19) et faire en sorte qu’il n’en fasse pas. C’est probablement l’affichage d’une notice (cas classique)
Si tu es en mode debug, passe en define(‘WP_DEBUG’, false); [dans config.php] pour voir la différence.
Oxyde le 21 Feb à 11:15
Bonjour,
J’aimerais savoir si on pouvait lier un custom post type à une page ?
J’aimerais pouvoir afficher un article de mon custom post type dans une page particulière et pas dans les autres.
Merci de votre aide
Ajouter des règles de réécriture pour les Custom Post Type | WordPress & Webdesign le 23 Mar à 11:44
[...] personnalisés sont très pratiques. Comme l’explique très bien Jérémy Thomas dans son introdution à WordPress 3, les Custom Post Types permettent d’élargir les différents types de contenus pris en charge [...]
Lukai le 28 Mar à 01:12
Il y’a un seul truc qui me dérange, (je dois, sans doute, ne pas savoir faire) mais j’ai plus mes liens “création suivante / précédente” mais sinon super utile (pour mettre de l’ordre aussi :p)
Merci pour le cours.
Dan le 5 Apr à 14:12
Hello! Tout d’abord un grand merci pour ce super tuto!
Ensuite j’ai une question…je suis encore qu’un simple novice en php, du coup il y a un détail que je ne saurai régler…Quand on suit ta méthode, le titre apparaît comme un lien, OR, je ne veux pas de ce lien…et puis j’ai tenté une ou deux modifs pour le créer avec les propriétés d’une page mais sans succès…une piste pour mes deux questions?!
En tout cas merci encore, vraiment très bien expliqué ton tuto
Yannick le 8 Apr à 12:47
Je voyais souvent se terme barbare diffusais sur ma TL twitter, j’avais peur de m’y engoufrais car j’ai 50 choses à faire, et la en 10 min tout est résumé.
Vraiment merci, j’ai tout compris et mon cerveau commence déjà à voir mes multiples futures projets sous un nouvelle angles.
Y’a pas à dire WordPress c’est de la balle.
Cordialement,
Yannick
ps : merci encore à l’auteur pour cet article excellent
ThomasG le 14 Apr à 08:53
Bonjour,
Super tuto ! Je n’arrive cependant pas a faire fonctionner les commentaires sur un custom post type, il ne s’enregistre pas. Es ce que quelqu’un à une idée?
Merci d’avance
Thomas
Philippe le 15 Apr à 16:04
Excellent tutorial. Cela m’a bien permis de comprendre taxonomy et post type. Effectivement ca facilite bien le choses. Plus besoin de tables supplémentaires. Merci
Yacine le 6 May à 16:02
Merci, pour ce tuto.
Abcmoteur le 15 May à 02:12
Merci pour ces explications, c’est plus clair dorénavant.
Masamune le 26 May à 18:06
Très intéressant, merci pour cet article.
J’avoue que j’avais un peu de mal à m’y mettre mais c’est vrai que ca sera quand même beaucoup plus simple que de rajouter tout dans les metas x’)
WordPress — Ajouter des règles de réécriture pour les Custom Post Type le 10 Jun à 18:41
[...] personnalisés sont très pratiques. Comme l’explique très bien Jérémy Thomas dans son introdution à WordPress 3, les Custom Post Types permettent d’élargir les différents types de contenus pris en charge [...]
Lucie le 24 Jun à 14:28
Bonjour,
Merci pour cet article très complet.
Une petite question, est-il possible d’intégrer les taxonomy crée dans un menu de navigation principal ?
Je prépare un site et suis un peu perdue…
Je souhaite intégrer un menu principal déroulant, chaque item “appelle” des “articles”, sachant qu’un article pourra se retrouver dans des items différents, et que ceux-ci lors du clic s’afficheront en mode blog.
Suis-je sur la bonne piste avec les customs types et les taxonomy ?
D’avance merci pour votre réponse.
Kaki le 22 Aug à 11:56
Les explications sont super, et tout marche parfaitement bien, sauf que lorsque je clique sur une taxonomie il me met “alors on triche ?” et je ne peux pas accéder à mes “catégories” de taxonomie… Bizarre non ? Vous savez d’où cela peut venir ? Je ne trouve pas sur le net…
Kaki le 22 Aug à 15:25
Ah j’ai trouvé ! Il ne faut pas mettre de majuscule dans la nomenclature
J’avais écris “Typologie” !
J’ai pas contre un autre souci très bizarre : je lui demande de m’afficher tous les articles avec la même taxonomie mais il ne m’affiche jamais le dernier article rentré, c’est très étrange, et je ne vois pas pourquoi il fait cela….
Nadege le 28 Aug à 10:25
Bjr
J’ai un soucis quand j’insere mon code dans ma page single.php pour afficher les customs taxonomies et j’ai un message d’erreur :
<div id="post-” >
<?php echo get_the_term_list( the_ID(), 'localisation', 'Type de projet : ‘, ‘, ‘, ” ) ?>
ID, ‘couleur’, ‘Couleurs : ‘, ‘, ‘, ” ) ?>
<?php endwhile;
message d'erreur : Catchable fatal error: Object of class WP_Error could not be converted to string in /homepages/46/d331605444/htdocs/wp-content/themes/Bitter/single-equipement.php on line 12
laligne 12 etant <?php echo get_the_term_list( the_ID(), 'localisation', 'Type de projet : ‘, ‘, ‘, ” ) ?>
quelqu’un peut il em dire ou est le soucis
Merci
nadege
Gilles Dumas le 7 Sep à 13:34
Il me semble que la fonction the_ID() écrit l’id et ne le renvoie pas. Essaye plutôt avec get_the_ID().
Dany le 8 Sep à 11:00
Bonjour et bravo pour l’article. Un bonheur de trouver quelque chose d’aussi clair.
Dans l’affichage des custom taxonomies, que faudrait-il ajouter pour exclure de l’affichage l’une des catégories créées ? Je m’explique :
j’affiche des secteurs, séparés par des virgules :
Secteur1, secteur2, secteur3, …
Comment faire pour ne pas afficher secteur3 par exemple ?
Merci
Denis le 11 Sep à 11:07
meilleur article de la sorte
merci beaucoup
stef le 19 Sep à 19:57
Je cherchais depuis longtemps a inserer le Google Maps dans un custom post ; C’est fait avec ceci : http://wordpress.org/extend/plugins/pronamic-google-maps/
Si ca peut aider quelqu’un ….
Damien le 29 Oct à 09:57
Bonjour, très intéressant merci!
Par contre, la démarche est-elle la même avec le thème Eleven? (le fichier loop.php n’étant plus là).
Je suis hyper débutant
Custom Post Type, Custom Taxonomy – Tutoriel WordPress le 22 Nov à 12:58
[...] déjà longuement écrit à ce sujet sur mon blog. C’est pourquoi je reprendrai une grande partie des idées et exemples [...]