開発

is_post_type_archiveで投稿が0の場合投稿タイプが取得出来ない。


どういうシチュエーションで使うかは置いといて、下記のようにis_post_type_archive()の条件分岐で、投稿タイプ名を取得しようとした際、まだその投稿タイプで投稿件数0の場合、異なる結果となります。

if(is_post_type_archive()){
  $post_type = get_post_type();
}

その場合は、以下のように修正すると投稿タイプ名を取得出来ます。

if(is_post_type_archive()){
  $post_type = get_query_var( 'post_type' );
}

参考:

WordPress 投稿が0件でもpost_typeを取得したい。 – かもメモ

WordPressで post_typeを取得する場合 通常 get_post_type() を使うのですが、投稿が無い時(0件の時) get_post_type() は false を返すため今のページの post_typeを取得できない場合があります。(カスタム投稿タイプを作って投稿が0件の アーカイブ ページとか) Source File: wp-includes/post.php 引用元: get_post_type() | Function | WordPress Developer Resources これは投稿がないと global $postがNULLなため get_post( $post )が見つからないので false が返る仕様になっているようです。 get_query_var( ‘post_type’ ) を使うと、投稿が0件で $post が NULL の時でも、そのページの post_type を取得することができます。 カスタム投稿タイプなど投稿が0件でも アーカイブページを表示したり、グローバルナビゲーションなどで post_typeが必要になる場合は こち らを使うのが良いのではないかと思います。 WordPress管理画面の設定 表示設定 > フロントページの表示


タグ: WordPress

コメントを残す