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.

Cet article WordPress : Ajouter une image aux catégories est apparu en premier sur RootsLabs.

Vus : 1697
Publié par Progi1984 : 78