WordPress : Ajouter une image aux catégories
Avec WordPress, la personnalisation d’un site peut aller très loin. Dans cet article, nous allons parler images, articles et catégories.
Voici l’état des lieux :
- Actuellement, ni les articles ni les images n’ont d’images liés.
- Dans le futur, un article pourra avoir une image liée (image à la une) ;
- Si ce n’est pas le cas, on utilisera l’image liée à la catégorie de l’article.
Comment allons nous faire ?
Toutes les modifications se font dans le fichier functions.php de votre thème WordPress.
Activer le support des images à la une dans le thème WordPress
On active les miniatures pour les articles.
add_theme_support('post-thumbnails', array('post'));
On définit les tailles des miniatures
set_post_thumbnail_size(100, 100);
Désormais, nous avons, pour les articles, la possibilité d’avoir une image à la une.
Lier une image à une catégorie
On crée un hook pour s’intégrer au formulaire d’édition de la catégorie dans le BO WordPress :
function fnAction_edit_category_form_fields($poTag){ $arrCategoryImages = get_option('category_url_images'); if(is_array($arrCategoryImages) && array_key_exists($poTag->term_id, $arrCategoryImages)){ $psURL = $arrCategoryImages[$poTag->term_id] ; } else { $psURL = ''; } ?> <table class="form-table"> <tbody> <tr class="form-field form-required"> <th valign="top" scope="row"> <label for="category_url_image"><?php _e('Image'); ?></label> </th> <td> <input id="category_url_image" name="category_url_image" type="text" value="<?php echo $psURL; ?>" /> <p class="description"><?php _e('Cette URL représenté l\'image liée à notre catégorie.'); ?></p> </td> </tr> </tbody> </table> <?php } add_action('edit_category_form_fields', 'fnAction_edit_category_form_fields');
On crée un hook qui s’activera lors de la sauvegarde d’une catégorie :
function fnAction_edited_category($piIDTerm){ if(isset($_POST['category_url_image'])){ $arrCategoryImages = get_option('category_url_images'); $arrCategoryImages[$piIDTerm] = $_POST['category_url_image']; update_option('category_url_images', $arrCategoryImages); } } add_action('edited_category', 'fnAction_edited_category');
Récupérer l’image à la une ou l’image de la catégorie
Pour cela, j’ai crée une fonction qui retourne d’abord si elle est présente l’image à la une sinon l’image liée à la catégorie.
function fnWP_getOGImage(){ if((function_exists('has_post_thumbnail')) && (has_post_thumbnail())) { $imageData = wp_get_attachment_image_src(get_post_thumbnail_id (get_the_ID()), 'thumbnail'); return $imageData[0]; } else { $oCategory = get_the_category(get_the_ID()); if($oCategory){ $arrCategoryImages = get_option('category_url_images'); if(is_array($arrCategoryImages) && array_key_exists($oCategory[0]->term_id, $arrCategoryImages)){ return $arrCategoryImages[$oCategory[0]->term_id] ; } else { return ''; } } } return ''; }
Désormais, à vous de jouer ! Dans mon cas, j’ai intégré cela dans mon header pour gérer les og:image de Facebook.
Commentaires
Mais ça, l’histoire des miniatures, la plupart des thèmes le propose par défaut, non ? (enfin en tout cas moi je la vois souvent par défaut)
A moins que l’idée soit de proposer une seule image commune à tous les articles d’une même catégorie ?
Erreur. Cela est proposé si cela a été développé dans le thème.
De plus, associer une image à une catégorie permet qu’un article ait une image même si l’article n’a pas d’image à la une.
oki dac, je vois mieux l’intérêt de la chose 😉
Merci pour ce tuto mais où est-ce que je met ces lignes de code dans le fichier fonction.php de mon thème ?? J’utilise « Twenty Thirteen » !
J’ai tout mi dans le fichier fonction.php de mon thème. J’ai bien la ligne dans catégories pour ajouter le lien vers une image de médias. Mais je ‘nai toujours pas d’image à la une de l’article de le catégorie concernée. Je n’ai pas mi d’image à la une dans l’article pour justement n’avoir que l’image de la catégorie. Je comprend pas où mettre ce code sur mon thème ??
Merci
Bonjour
Pour le code, il est à mettre dans le fichier functions.php du thème.
Pour avoir l’OG Image, il faut ajouter cela dans le fichier header.php du thème entre les balises <head> & </head>
cela fonctionne t il pour les articles déjà écrits ?
sur http://test.jbmm.fr/category/business
je ne vois pas le résultat….
merci
De mémoire, cela fonctionne bien.
Qu’avez vous fait ?
Avez vous bien ajouté l’URL d’une image dans la catégorie ?
Avez vous bien affiché cette image dans votre thème ?
Bonjour, je cherche a mettre une image a la une pour chaque catégories.
j ‘ai donc suivi votre tuto mais je ne comprend pas la fin. l’image ne s’affiche pas, par contre j’ai bien la possibilité de mettre l’url de l’image dans le B.O.
ou je doit mettre ceci:
et ceci est il necessaire:
merci pour votre réponse qui va je l’espère m’éclairer.
Bonjour,
Cette fonction est à mettre dans le fichier functions.php de votre thème.
Pour afficher l’image, vous devez utilisez la fonction en situation.
Ainsi, appeler le code PHP dans votre balise meta ou dans une balise img.
Les balises meta sont nécessaires si vous souhaitez supporter les Twitter Cards.
Bonjour,
je cherche à afficher dans un post la liste des catégories associées avec leurs images ?
pouvez-vous me dire ce que je doit mettre ?
merci beaucoup
Bonjour,
merci pour cette précieuse aide, ça marche nickel jusque là. Petite question cependant: Si je veux afficher cette image sur la page de catégorie, à quelle fonction dois-je faire appel ?
the_post_thumbnail?
n’a pas l’air de fonctionner
Pour la précision, j’aimerai la faire afficher entre le titre et la description comme dans un article
Merci d’avance
Ajouter un commentaire