Les champs personnalisés ou custom fields permettent d’ajouter des métadonnées supplémentaires dans vos différents contenus (pages, articles ou types de contenu personnalisés).
Très puissant, ces champs peuvent être créés automatiquement à chaque nouvel article ou autre contenu. Il ne vous restera plus qu’à saisir les valeurs correspondantes ou à les prédéfinir.
Rappelons dans un premier temps qu’un champ personnalisé est composé d’une clé (le nom du champ) et d’une ou plusieurs valeurs.
Pour automatiser leurs créations, il suffit d’ajouter ces lignes de code dans le fichier functions.php situé dans le dossier /wp-content/themes/NOM_DU_THEME/ ou de passer par le back office de WordPress via le menu Apparence puis Éditeur – bien que cette seconde méthode soit plus risquée en cas d’erreurs :
Plusieurs informations à savoir concernant ce bout de code :
if ($_GET['post_type'] != 'page') {
: vous pouvez choisir le type de contenu pour lequel les champs personnalisés seront générés. Dans l’exemple, tous sauf les pages – notez la présence du point d’exclamation. Vous pouvez utiliser la valeur post pour les articles ou le slug de n’importe quel custom post type – en utilisant ou non le point d’exclamation pour gérer des exclusions ;add_post_meta($post_id, 'custom_field_1', '', true);
: voici 2 lignes d’exemple créant les champs personnalisés. Ici, 2 champs intituléscustom_field_1
etcustom_field_2
seront générés. Libre à vous donc d’ajouter autant de lignes que souhaité avec les noms de vos choix. Notez aussi qu’un troisième argument peut être défini pour indiquer une valeur prédéfinie comme ceci :add_post_meta($post_id, 'custom_field_1', 'ma_valeur_defaut', true);
De nombreux plugins utilisent cette technique pour insérer des métadonnées qui seront alors affichées sur le site ou garder en mémoire dans la base de données pour une utilisation en back office.
Bonjour, je déterre un peu le truc mais vu que le tuto est super, ça va faire un petit up…
Dans une page (ou un post) est-il possible de mettre plusieurs fois le même champ personnalisé ?
Par exemple, je liste une série de films : puis-je ajouter un champ personnalisé pour ajouter la date de sortie pour chacun des films, avec une date de sortie différente bien sûr ?
merci
Dans ton cas, passes par l’extension ACF qui te donnera une interface graphique. 😉
Bonjour,
Merci pour ce tuto, ça me parait être une solution à mon problème, mais pour en être certain (et comme je suis novice de chez novice) :
je gère des annonces sur mon site (des jobs), base WP 4.4.2, qui sont postées automatiquement par un outil qui publie des billets avec des custom_field.
je souhaite reprendre 2 de ces champs personnalisés (localisation et secteur) pour classer les posts, permettre la recherche, attribuer une image en fonction du secteur.
Merci pour votre réponse et/ou aide !
Olivier
Merci pour ce tuto bien sympa 🙂 J’ai finalement utilisé une autre méthode pour afficher les champs personnalisés en front-office. J’ai ajouté dans le fichier single.php de mon template.
Merci pour cet article.
Petite question, je voudrais créer un champ personnalisé vignette qui reprendrait automatiquement l’image à la une de l’article ou sinon une image par défaut.
Du coup le code donnerait ça :
add_action(‘wp_insert_post’, ‘wpc_champs_personnalises_defaut’);
function wpc_champs_personnalises_defaut($post_id)
{
if ( $_GET[‘post_type’] != ‘page’ ) {
add_post_meta($post_id, ‘vignette’, ‘la_fonction_qui_reprend_mon_image’, true);
}
return true;
}
Par contre je ne vois pas comment reprendre automatiquement l’image à la une.
Merci de ton aide.
Je t’invite à faire une recherche sur les tutoriels WordPress évoquant les miniatures. Il y a sans doute une réponse à ton problème. 😉
Bonjour, est-il possible de n’utiliser que la valeur d’un champ personnaliser ?
C’est à dire effacer les “ul” et “li” et ne pas afficher le nom du champ personnaliser . Le but étant de pouvoir ajouter des textes ou des url très courts . Le nom du champ personnalisé ne serait utiliser que comme référence . Si ça n’est pas possible comment faire autrement et simplement ?
je réponds à mon propre commentaire :
au lieu d’utiliser the_meta(); il faut utiliser : echo get_post_meta($post->ID, “nom du champ”, true);
Merci !
Voilà une astuce bien utiles qui évite les taches répétitives 😉
Bonjour à tous,
Tout d’abord, merci pour ce tuto très utile 🙂 Par contre, j’aurais une question : comme cela a été évoqué en début de liste de commentaires, l’astuce donnée n’empêche pas les doublons de se créer (au contraire même !)…
Du coup j’aurais voulu savoir s’il était possible de mettre un genre de condition dans ce code, afin que WordPress ne créé pas 20 fois le même champ personnalisé ?!
Ca doit être possible… pas le temps de tester. 🙁
Salut tlm,
Vous m’avez l’air d’etre des pros. J’ai une question.. J’ai un theme : minimalisma. J’ai wordpress version 3.5.1.
Pour le slideshow, ca demande un champ personnalisé nommé : slide.
J’ai essayé des extentions (2) et je viens d’essayer le bout de code ci-haut et le champs n’apparait pas, est-ce qu,il y a un endroit précisement pour mettre le code ou ca ne fonctionne plus avec 3.5.1 ?
Sinon comment faire pour avoir un champ personnalisé dans un article?
Merci !
Salut speryann, au cas ou tu n’ai toujours pas ta réponse:
comment récupère tu les données de ton champ personnalisé ?
Dans ton slide et à l’endroit ou tu veux ajouter les informations de ton champ personnalisé, ajoutes-tu bien : ?
Il est évident qu’auparavant il faut appeler l’id du post ou de la categorie!
Tout d’abord très intéressant comme tuto pour un beginner comme moi sous wordpress c’est génial 🙂
Ensuite j’aurai une question, je ne sais pas si c’est possible mais bon voila:
comment faire pour afficher les champs personnalisés en fonction du “template de page” que l’on charge … je m’explique j’aimerais afficher les champs personnalisés par défaut pour mon template de page d’accueil et d’autres champs par défaut pour mon template de page contact par exemple.
merci d’avance
Bonjour cette question me semble hors sujet même si on parle des meta fields.
Je t’invite à poser ta question ici : http://www.geekpress.fr/questions/
Merci !
Merci Julio grâce à GeekPress, j’ai pu trouver un début de solution et après je me suis débrouillé avec ce tuto, donc voici le code:
http://pastebin.com/6Xe7SZu0
si quelqu’un a une meilleur solution je suis preneur 🙂
Merci.
Aurélien, moi j’utilise Simple Press mais même avec ton tuto je ne comprends pas comment insérer les champs personnalisés dans l’article.
Hum je ne comprends pas le rapport avec Simple Press ?
ton GET n’est pas la bonne méthode, si on est sur un type post et bien la variable n’existe pas car la page sera post.php et non pas post.php?post_type=post ^^
Utilise plutôt :
global $typenow;
if( $typenow == ‘page’ )
Ah ! Merci de l’info ! 😎
Bonjour,
déjà merci pour ce bout de code fort utile. J’ai cependant un léger problème…. Dès lors que l’enlève le’!’ à la ligne : $_GET[‘post_type’] != ‘page’
ou que je remplace par post, page ou le slug de mon custom post type, mes champs persos créés apparaissent dans les pages d’édition des post, page et custom post type, et leur affichage ne se limite alors plus au champ (post, page ou slug de mon custom post type) définit à $_GET[‘post_type’] != ‘page’
Une idée quelqu’un? Merci.
Oui, c’est vrai que je suis tenté de passer sur OVH ou autre mais même si mon thème a été mis à jour, j’ai fait quelques modifs que je veux garder mais sans être sûr de savoir les refaire sur la nouvelle version de TheMorningAfter… Alors tant que ce blog tient, j’y touche pas trop. Bon par contre, j’ai perdu la “fonction” Curl récemment et je suis bien ennuyé… Ca va peut-être me pousser à changer plus vite que prévu.
Sinon, c’est quand même la perte de référencement qui me bloque le plus… J’ai bossé plusieurs années, je veux pas tour perdre…
Merci! En fait, ma version de WordPress est trop ancienne pour l’utiliser… Je sais, je devrais le mettre à jour mais mon thème risque de ne plus marcher et sur Free, j’ai un peu peur que la 3.3 ne tourne pas très bien…
Je vais peut-être upgrader en 2.9 quand même 😉
Wow, un WordPress 2.7 … sinon chez OVH pour 29 euros TTC par année, tu as un hébergement digne de ce nom.
Oui, je sais bien! Mais chez Free c’est visiblement compliqué d’en partir sans perdre tout mon référencement… Les redirections 301 ne marchent pas il me semble…
chez Free,on peut être sous WP3.1.4 au maximum,déjà plus je ne fais pas partie des personnes qui proposent OVH comme hébergeur,trop souvent un message d’erreur comme quoi le site ne peut pas se connecter à la base de donnée,j’y suis depuis plus de 8 ans,une vieille offre 300gp,juste la fainéantise de changer d’hébergeur,j’ai testé 1&1 plus stable,pas de souci,rien à redire.
Chez Free on peut mettre un page pour indiquer la nouvelle adresse.
Laissez tomber OVH !!! 1&1 plus stable mais limité en performances.
Un bon mutualisé : Mavenhosting pour 60€ l’année. Plus cher mais puissant (bande passante illimitée, 75 Go d’espace disque, panneau d’administration cPanel, multi-domaines, etc.). 😉
Euh, chez OVh depuis plus de 3 ans, jamais eu de probleme o_O
Et entre une free.fr et un OVH perso à 28€ … ya pas photo quand meme !
Quand on arrive a vivre avec un free.fr, on est tres content d’avoir un OVH perso non ?
Passez à 60€ l’année c’est trop quand on vient de free.fr.
OVh c’est pas 75go mais 250go. BP non limitée, et jamais de message d’erreur ici… #pebkac
le thème aussi a eu des mises à jour http://www.woothemes.com/2010/06/themorningafter/
bien sur de Free à OVH,il n’y a pas photos.
vous n’êtes pas tombé sur le moment de la journée où on a droit à ce genre de message chez OVH,coup de chance,mais c’est un message qui arrive souvent,je vois sur le forum de wordpress-fr.net pas mal de personne viennent poser en panique à cause de ce message.
OVH n’est pas stable,tu dis 250Go quel offre? Parce que ‘offre perso c’est 25Go
1&1 … Pour un mutualisé il n’y a pas pire !!
Obligé de passer par le manager pour accéder à phpMyAdmin.
Et concernant le ftp, la fonction snap n’est pas disponible. En gros,le site plante et si on n’a pas de backup et bin dans le …
1&1, j’avais que des problèmes, OVH tout est nickel =D
Merci pour l’article! Juste une petite question: comment fait pour remplir automatiquement les champs personnalisés? Par exemple dans mon thème, un champ personnalisé existe pour placer une miniature au dessus de l’extrait mais je dois uploader une image à chaque fois et mettre son nom dans la “valeur”. Est-ce possible de déterminer cette valeur automatiquement, en fonction de la catégorie par exemple, ou d’un tag? Comme ça plus besoin de remplir ce champs à chaque fois que je rédige un article…
Je sais pas si je suis clair…
Merci d’avance 😉
Hello
Peut etre avec ça
http://www.geekpress.fr/wordpress/extension/simple-auto-featured-image-generer-auto-thumbnail-articles-1126/
ou le genre de code qu’il utilise.
Au risque d’avoir l’air BEGINEER – Dans quel cas préférer les Champs personnalisés aux Custom Meta ?
Qu’entends-tu par custom meta ? Les métaboxes ? Ce ne sont que des champs personnalisés en réalité… 🙂
Ah et bien voila pourquoi je ne comprenais pas la différence :p Merci 😀
Toujours utile ça !
A noter que le code se déclenche aussi lors de l’insertion d’une révision et donc d’un autosave.
Très pratique comme infos 🙂
Merci Aurélien !
Merci à vous deux ! 😎