Dans le code suivant, je voudrais supprimer la div qui enveloppe tout le code et passe sa classe à article, mais je ne sais pas comment passer la variable $ termString dans la post_class.
Quelqu'un peut-il m'aider?
<div class="<?php echo $termsString;?>">
<article id="post-<?php the_ID(); ?>" <?php post_class('card'); ?>>
<?php echo get_the_post_thumbnail($post_id, 'large', array('class' => 'img-fluid card-img-top')); ?>
<div class="overlay"></div>
<div class="card-body text-right">
<h6 class="card-title"><?php the_title(); ?></h6>
<p>Text description for this item</p>
</div>
<a class="card-link" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"></a>
</article>
</div>
Donc, j'ai ceci maintenant, et c'est ce que j'attendais:
<article id="post-<?php the_ID(); ?>" <?php post_class('card grid-item wow fadeInUp ' . $termsString); ?>>
mais j'ai également besoin d'ajouter à ces classes une autre classe qui provient d'un champ personnalisé dont le nom est "colonnes" et dont la valeur est "col-12".
C'est ce que j'essaie, mais je pense qu'il y a une erreur de syntaxe. Le résultat que je vois dans l'inspecteur de Firefox est "Array" au lieu de la valeur de "colonnes":
<?php $custom_values = get_post_meta($post->ID, 'columns', true); ?>
<?php
$classes = array(
'card',
'grid-item',
'wow',
'fadeInUp',
$termsString,
$custom_values
);
?>
<article id="post-<?php the_ID(); ?>" <?php post_class( $classes ); ?>>
Edit: get_post_meta nécessite un troisième paramètre, "false" renvoie le tableau (par défaut), "true" ne renvoie que le premier résultat (PAS sous forme de tableau). Maintenant ça marche! Merci beaucoup.
La fonction post_class
accepte également un tableau de classes. Vous pouvez les transmettre à la fonction comme suit:
$classes = [
'card',
'grid-item',
'wow',
'fadeInUp',
$termsString
];
<div <?php post_class ( $classes ); ?>>
...
</div>
Vous pouvez stocker la valeur du champ personnalisé dans une variable, puis la transmettre à la fonction comme toute autre valeur.
Vous devriez être capable d'utiliser simplement post_class( 'card ' . $termString )
.
La fonction accepte les tableaux et les chaînes, voir https://developer.wordpress.org/reference/functions/post_class/
Vous pouvez également utiliser le filtre post_class pour ajouter plus de classes si vous préférez.