次のコードで、すべてのコードをラップしてそのクラスを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"は最初の結果のみを返します(配列としてではありません)。今それは働いています!どうもありがとう。
post_class
関数はクラスの配列も受け入れます。次のようにしてそれらを関数に渡すことができます。
$classes = [
'card',
'grid-item',
'wow',
'fadeInUp',
$termsString
];
<div <?php post_class ( $classes ); ?>>
...
</div>
カスタムフィールドの値を変数に格納して、他の値と同じように関数に渡すことができます。
post_class( 'card ' . $termString )
を使うことができるはずです。
この関数は配列と文字列を受け付けます。 https://developer.wordpress.org/reference/functions/post_class/ を参照してください。
そのようにしたい場合は、post_classフィルタを使用してさらにクラスを追加することもできます。