Je veux créer sur mon blog une boucle de catégorie avec l'image en vedette. Mais je ne sais pas comment je fais ça technique.
Vous ne devriez voir qu'une liste de catégories et cliquer dessus pour obtenir le site de catégorie. C'est comme une boucle d'article uniquement avec des catégories.
Merci pour toute aide :)
Eh bien, dans WP le mot "boucle" est principalement lié aux publications. Il est plus facile de dire que vous souhaitez afficher les catégories.
Tout ce que vous avez à faire est de les obtenir en utilisant get_categories
fonction et affichez-les.
<?php
$categories = get_categories( array(
'orderby' => 'name',
'order' => 'ASC'
) );
if ( ! empty( $categories ) ) :
?>
<ul>
<?php foreach ( $categories as $category ) : ?>
<li><a href="<?php echo esc_attr(get_category_link( $category->term_id ) ); ?>"><?php echo esc_html( $category->name ); ?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
Et si vous souhaitez modifier le titre de la catégorie en un champ personnalisé ACF, modifiez cette partie:
<?php echo esc_html( $category->name ); ?>
à:
<?php echo wp_get_attachment_image( get_field('<FIELD_NAME>', $category), 'full' ); ?>
PS. N'oubliez pas de changer le vrai nom du champ. Il doit retourner l'ID d'une image (et non le tableau - vous devez le définir dans le réglage sur place). Vous pouvez également changer la taille "complète" en une autre taille.
La clé de ceci est la fonction get_categories()
.
Vous pouvez l'utiliser comme suit, notez que j'ai supposé que l'URL de l'image en vedette est stockée dans une méta de la catégorie qui peut ne pas être votre cas:
$categories = get_categories();
if(count($categories)) {
foreach($categories as $cat) {
$catID = $cat->term_id;
$img = get_term_meta($catID, 'featured_image', true);
$url = esc_url( get_category_link( $catID ) );
echo "<a href='$url'><img src='$img' /></a>";
}
} else {
echo "No categories!";
}
Dans le cas où vous utilisez le champ d'image ACF pour ajouter l'image sélectionnée à la catégorie, il est préférable d'utiliser get_field('featured_image', 'category_'.$catID)
au lieu de get_term_meta()
. Le code dans ce cas dépend de vos paramètres de terrain, donc je vous encourage à lire documentation ici .