かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

WordPress 個別記事をpost_typeで判定をしたい。

例えば通常の投稿(post)の個別記事か判定したいような時。

is_single() ではpost_typeの判別はできない。

<?php
// こんな風には判定することはできない。
if( is_single( 'post' ) ) {
  echo '投稿の個別ページ'; // 投稿個別ページでは表示されな
}

get_post_type() でpost_typeを取得する方法 (イケてない)

get_post_type() を使えば、post_typeが取得できるので、コレを利用する

<?php
$post_type = get_post_type();
if( $post_type === 'post' && is_single() ) {
  echo '投稿の個別ページ';
}

is_singular() を使うのがベスト

is_singular ( string|array $post_types = '' )
引数にpost_typeを渡せばその投稿タイプの個別記事ページかをBool値で返してくれる。

<?php
if( is_singular( 'post' ) ) {
  echo '投稿の個別ページ';
}

is_single()で投稿タイプ判定できそうなイメージがあるけど、投稿タイプで判定したい時はis_singular()
WordPressちょっと触ってないと直ぐ忘れる...
個人的にfunction.phpにダラダラ書いていくのもちょっとイケてない気がするので扱いづらい感出てきてる。。。便利なんですけどね。

自分のblog検索したら、案の定 以前にもハマった落とし穴だった......

そして、アーカイブページはis_post_type_archive( $post_type )を使うのでした。


[参考]