Ajouter des champs custom fields à une taxonomie avec Tax Meta Class

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.


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

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

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

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  »

« ;
?>

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

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 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 ?

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).

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 !

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

Laisser un commentaire