ワードプレスのテンプレート、主に「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