web-dev-qa-db-ja.com

Post_classにクラスを追加する方法

次のコードで、すべてのコードをラップしてそのクラスをarticleに渡すdivを削除したいのですが、変数$ termStringをpost_classの中に渡す方法がわかりません。

誰かが私を手伝ってくれる?

<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>

それで、私は今これを持っています、そしてそれは私が予想したものです:

<article id="post-<?php the_ID(); ?>" <?php post_class('card grid-item wow fadeInUp ' . $termsString); ?>>

しかし私はこれらのクラスに名前が "columns"で値が "col-12"のカスタムフィールドから来る別のクラスも追加する必要があります。

これは私が試みているものですが、私はいくらかの構文エラーがあると思います、私がFirefoxインスペクタから見る結果は「列」の値の代わりに「配列」です:

<?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 ); ?>>

編集: get_post_metaには3番目のパラメータが必要です。 "false"は配列を返します(デフォルト)。 "true"は最初の結果のみを返します(配列としてではありません)。今それは働いています!どうもありがとう。

4

post_class関数はクラスの配列も受け入れます。次のようにしてそれらを関数に渡すことができます。

$classes = [
    'card',
    'grid-item',
    'wow',
    'fadeInUp',
    $termsString
];

<div <?php post_class ( $classes ); ?>>
   ...
</div>

カスタムフィールドの値を変数に格納して、他の値と同じように関数に渡すことができます。

2
Jack Johansson

post_class( 'card ' . $termString )を使うことができるはずです。

この関数は配列と文字列を受け付けます。 https://developer.wordpress.org/reference/functions/post_class/ を参照してください。

そのようにしたい場合は、post_classフィルタを使用してさらにクラスを追加することもできます。

1
swissspidy