Notre dernier tutoriel explique comment regrouper des articles de blog dans une taxonomie Série. Cette fois, personnalisons nos taxonomies en leur ajoutant des nouveaux champs (custom fields) et étudions l’utilisation de la classe-helper Tax Meta Class.
- Helper Class PHP TaxMetaClass : github.com/bainternet/Tax-Meta-Class
- Présentation de TaxMetaClass (en anglais) : bainternet.info
- Code créé dans ce tutoriel : http://pastebin.com/CHWP0sng & http://pastebin.com/jJy8SJVE
La première partie de cette série se concentre sur notre nouvelle taxonomie Série créée avec la librairie Cuztom, puis sur la création d’un shortcode permettant d’afficher les articles de la série en cours de lecture. A ce stade, les éléments de notre taxonomie WordPress ne possèdent que peu d’informations : titre et description sont les seules données à afficher.
Mais saviez-vous qu’il est possible de créer des nouveaux champs pour étendre les structures des taxonomies WordPress ? L’helper Tax Meta Class s’avère bien pratique pour ajouter de nombreux types de champs : image, texte, date, checkbox, select, radio… et bien plus encore !
Création d’une metabox et ajout de custom fields
require_once(get_template_directory() . '/inc/Tax-meta-class/Tax-meta-class.php');
if (is_admin()){
$config = array(
'id' => 'serie_metabox',
'title' => 'Information sur cette série',
'pages' => array('serie'),
'context' => 'normal',
'fields' => array(),
'local_images' => true,
'use_with_theme' => get_template_directory_uri() . '/inc/Tax-meta-class'
);
$serie_metabox = new Tax_Meta_Class($config);
$serie_metabox->addText(
'difficulty',
array(
'name' => 'Difficulté'
)
);
$serie_metabox->addImage(
'image',
array(
'name' => 'Image'
)
);
$serie_metabox->Finish();
}
Dans un premier temps, on définit une array de configuration de notre metabox qui contiendra nos nouveaux champs. Ensuite, on instancie la classe Tax_Meta_Class et on utilise les méthodes à disposition (lisez class-usage-demo.php pour une liste des champs disponibles) pour ajouter des champs à notre metabox : addText ajoute un champs custom field de texte, addImage ajoute la possibilité d’assigner une image à notre taxonomie.
Enfin, on termine avec Finish pour initialiser le tout.
Help !
Je ne vois aucune metabox dans laquelle mes champs sont ajoutés, pourquoi définir un id et un title ? D’après la documentation de l’auteur de cette classe, l’id et titre de la metabox seront utilisés dans une prochaine mise à jour afin d’afficher les metabox en question… D’où l’actuelle utilisation !
Affichage des données des custom fields d’un terme de taxonomie
$serie_image = get_tax_meta( $serie->term_id, 'image' );
La syntaxe ressemble beaucoup à get_post_meta : on passe tout d’abord l’ID du terme de notre taxonomie, puis l’ID du champs (meta) de notre taxonomie. Rien de compliqué ! Notez qu’un champ d’image renvoie une array associativé avec l’ID et l’URL de l’image.
En couplant l’utilisation de la librairie Cuztom avec cette classe helper Tax Meta Class, nous pouvons désormais transformer WordPress en un vrai CMS qui va au delà du simple blog. Nos types de contenus personnalisés se voient recevoir des champs uniques pour stocker des données spécifiques. Des custom taxonomies sont ajoutées sans souci et associées à n’importe quel type de contenu. Enfin, des champs custom fields sont également associés à ces taxonomies.
Avec une bonne connaissance de ces 2 librairies, vous pouvez maintenant développer des contenus proprement nommés et catégorisés aux données complexes, avec une interface qui se fond à l’interface WordPress pour que vos clients profitent de ces fonctionnalités en toute simplicité !
28 commentaires
[…] Ce tutoriel vidéo aborde l'utilisation de la librairie Tax Meta Class pour ajouter des custom fields à vos taxonomies WordPress et afficher leurs valeurs. […]
Merci pour ce tuto ça fait un petit moment que je cherchais à ajouter une image à mes taxo je vais essayer ça tout de suite
Content d’avoir été utile 😉
Par auteur
Merci ca marche nickel par contre comment récupérer l’image dans un format bien défini
jai créé des post-thumbnails
add_image_size( ‘titre’, 668, 196, true );
comment ajouter avec le format titre
Lorsque tu utilises get_tax_meta($serie->term_id, ‘image’), tu as accès à une array associative qui t’offre l’ID de l’image avec $ton_array[‘id’] (au lieu d’utiliser $ton_array[‘src’]).
Tu peux donc utiliser wp_get_attachment_image_src avec cet ID en indiquant la taille ‘titre’ en 2e paramètre !
http://codex.wordpress.org/Function_Reference/wp_get_attachment_image_src
Par auteur
est ce qu’il possible de récupérer les dimensions du style
if ( has_post_thumbnail() ) { // dans la boucle
$imageData = wp_get_attachment_image_src(get_post_thumbnail_id ( $post_ID ),titre);
echo »
LoL tu viens de me répondre, j’avais pas pensé à récupérer mon code avec l’id en paramètre
Merci
Félicitation pour ton blog
Merci !
En effet tu peux récupérer width/height avec la fonction que je viens de citer : http://codex.wordpress.org/Function_Reference/wp_get_attachment_image_src#Return_Value
Par auteur
Je poste mon code pour ceux que ca pourrait intéresser sur un fichier taxonomy-« nom de votre taxo »
$term = get_term_by(‘slug’,get_query_var(‘term’),get_query_var(‘taxonomy’));?>
term_id, ‘chantier_img’);
$id = $chantier_metabox[‘id’];
$imageData = wp_get_attachment_image_src($id,titre);
echo »
« ;
?>
Je te conseille d’utiliser http://pastebin.com/ pour partager du code, plus pratique 😉
Par auteur
Salut,
As tu essayé l’upload de plusieurs images
$repeater_fields[] = $my_meta->addImage($prefix.’image_field_id’,array(‘name’=> __(‘My Image ‘,’tax-meta’)),true);
$my_meta->addRepeaterBlock($prefix.’re_’,array(‘inline’ => true, ‘name’ => __(‘This is a Repeater Block’,’tax-meta’),’fields’ => $repeater_fields));
moi ce me retourne cet erreur
Warning: Illegal offset type in C:wampwww…….librairieTax-meta-classTax-meta-class.php on line 537
Ca uload bien mais quand j’enregistre quand je retourne dans ma taxo il me retourne l’erreur et n’affiche pas les images
Salut Thomas,
Hélas je n’ai jamais utilisé avec plusieurs images.
Je publierai bientôt un nouveau tuto-vidéo sur la création de custom fields d’une taxonomie avec une alternative à Tax Meta Class (https://github.com/Gizburdt/Wordpress-Cuztom-Helper) et j’essaierai d’aborder ton problème à travers cette librairie.
Par auteur
J’ai réessayé avec un wordpress en local sans plugin
rien à faire ça ajoute bien mes images dans la base de donnée car sur ma page de taxonomy-« ma taxo » j’arrive à les afficher par contre toujours cette erreur dans l’admin quand je veux afficher ma taxo
Warning: Illegal offset type in C:wampwww…….librairieTax-meta-classTax-meta-class.php on line 537
J’ai bien l’icone supprimer qui fonctionne mais à la place de l’image j’ai un tableau d’erreur php
J’attends avec impatience ta nouvelle vidéo
Enfin trouvé l’erreur si ca peut servir
il faut remplacer ce code à la ligne 537 dans le fichier tax-meta-class.php
$mmm = ($me[$field])? $me[$field[‘fields’][0][‘id’]]: « »;
echo ».$mmm. »;
par
$mmm = isset($me[$field[‘fields’][0][‘id’]])? $me[$field[‘fields’][0][‘id’]]: « »;
echo »;
Bonjour,
Tout d’abord je vous remercie pour ce tuto 😉
J’ai un petite poblème je n’arrive pas à afficher l’image et le texte sur ma custom taxonomy :
term_id, ‘photo’); $auteur_photo_src = $auteur_photo[‘src’]; echo »; ?>
term_id, ‘date’); ?>
A l’affichage :
Bonjour Louis !
Problème d’affichage de votre code dans le commentaire, pourriez-vous me transmettre votre code et problème via http://pastebin.com/ svp ?
Merci !
Par auteur
Bonjour Pierre,
Je vous remercie d’avoir répondu si vite à ma question
Lien : http://pastebin.com/vvgxxCfA
Ps : je crois mettre tromper de bouton.
Cordialement
Bonjour Louis,
Que donne un print_r() sur $author_photo ?
Par auteur
Bonjour Pierre,
Avec le code :
term_id, ‘photo’); print_r($auteur_photo); ?>
Rien ne s’affiche malheureusement.
Bonjour Louis,
Il faut remonter en amont alors, est-ce que term_id est défini ?
Par auteur
Bonjour Pierre,
Je vous remercie d’avoir répondu si vite à ma question
Lien : http://pastebin.com/vvgxxCfA
Ps : lors de l’affichage voici ce qui apparaît sur la console de chrome :
Image :
Pour la date rien ne s’affiche.
Cordialement
Bonjour Pierre
Je ne sais pas si je m’y suis bien pris mais il semble que l’upload d’image de cette library ne soit pas opérationnelle ? Est-ce moi ?
Bonjour Cédric,
Pour être totalement honnête je n’ai plus utilisé cette librairie depuis cet article.
Depuis, l’helper Cuztom (dont je parle dans 2/3 autres tutos) a étendu ses metabox et custom fields aux taxonomies, cf https://github.com/Gizburdt/Wordpress-Cuztom-Helper/wiki/Term-Meta
Donc j’ai radié l’utilisation de Tax Meta Class au profit d’une seule et unique pour mes CPT et custom fields : Cuztom.
Par auteur
Je vais donc laisser tomber la librairie présentée dans l’article.
Petite question : est-il possible de créer les meta-fields avec cette librairie sans modifier les fichiers de création des custom type post et meta-boxe ?
Tu veux dire les CPT/metaboxes créés avec une AUTRE librairie que Cuztom ?
Oui bien sûr, via « new Cuztom_Term_Meta()…. ». C’est en fait exactement ce que fais la méthode « $taxonomie->add_term_meta() » dans le wiki ci-dessus.
Je vais essayer de repdrendre un peu l’écriture du blog : ça pourrait être le prochain article (custom fields de taxonomies via Cuztom).
Par auteur
Bonjour Pierre,
D’abord merci pour ce tutoriel très complet.
Je souhaite ajouter un champ d’upload d’image pour une custom taxonomy que j’ai déjà créée. J’ai suivi les différentes étapes de ton tutoriel et je bloque sur le chemin d’accès aux fichiers CSS et JS.
Comme toi j’avais l’erreur des fichiers introuvables mais lorsque je remplace get_template_directory() par get_template_directory_url() j’ai une page blanche au chargement de mon admin (et ce quelque soit la page de l’admin). Voici le code http://pastebin.com/ecqPKs1w que j’ai édité dans mon fichier functions.php . Aurais-tu une idée de l’erreur (certainement bête) que j’ai pu faire ?
Merci par avance pour ta réponse,
Fabien
Bonjour Fabien,
Essayez avec get_template_directory_uri() (et non url). Si ça ne marche toujours pas, essayez également avec :
require_once locate_template(‘/inc/Tax-meta-class/Tax-meta-class.php’);
A votre dispo !
Par auteur
Le tutoriel montre comment l’intégrer dans un thème mais pas dans un plugin. Le champs upload image dans mon cas ne fonctionne pas. Malheureusement j’ai essayé de modifier le chemin, mettre sur true, rien ne fonctionne. . Comment faire pour que le bouton upload image soit fonctionnel pour le plugin ?? Merci