web-dev-qa-db-fra.com

Comment ajouter des classes à post_class?

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.

4
Antonino Lattene

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.

2
Jack Johansson

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.

1
swissspidy