ワードプレスのテンプレート、主に「single.php」や「page.php」で通常の投稿や固定ページを出力する際、自動でWordPress特有のクラス名を出力する[post_class]関数があります。

今回は、その[post_class]関数で任意のクラス名を出力する方法を紹介します。

[post_class]の通常の使い方

多くのテーマで、デフォルトの状態では次のように記載されているはずです。

<?php if (have_posts()) : ?>
	<?php while (have_posts()) : the_post(); ?>
		<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
			...
		</article>
	<?php endwhile; ?>
<?php endif; ?>

このとき、出力される値は投稿の状態に応じて次のようになります。

  • 「post-(投稿ID)」
  • 「post」または「attachment」または「カスタム投稿タイプ」
  • 「type-(カスタム投稿タイプ)」
  • 「status-(公開状態)」
  • 「format-standard」または「format-(ページのフォーマット名)」
  • 「post-password-required」:パスワード保護されている場合
  • 「has-post-thumbnail」:アイキャッチ画像が設定されている場合
  • 「sticky」:先頭に固定表示を指定している場合
  • 「hentry」
  • 「category-(カテゴリーのスラッグ)」または「category-(カテゴリーID)」
  • 「tag-(投稿タグのスラッグ)」または「tag-(投稿タグID)」

さて。
この post_class(); の引数を設定することで、出力される値をコントロールすることができます。

出力したい値が1つだけの場合

出力したい値が1つだけの場合は次のように記述します。

<article id="post-<?php the_ID(); ?>" <?php post_class( 'sample' ); ?>>
...
</article>

この場合、出力結果は次のようになります。

<article id="post-9003" class="sample post-9003 post type-post status-publish format-standard hentry category-blog">
...
</article>

出力したい値が複数の場合

出力したい値が複数の場合は配列で指定します。

<?php
	$classes = array( 'sample1', 'sample2', 'sample3' );
?>
<article id="post-<?php the_ID(); ?>" <?php post_class( $classes ); ?>>
...
</article>

出力結果は以下のとおり。

<article id="post-9003" class="sample1 sample2 sample3 post-9003 post type-post status-publish format-standard hentry category-blog">
...
</article>

ループの外で[post_class]を使う場合

[post_class]関数はWordPressループの外でも使うことができます。
その場合は第2引数で投稿のIDを指定する必要があります。

<article id="post-<?php the_ID(); ?>" <?php post_class( '', $post_id ); ?>>
...
</article>

以上。
[post_class]関数のより詳しい仕様は WordPress Codex を参照してください。

テンプレートタグ/post class :https://wpdocs.osdn.jp/テンプレートタグ/post_class