WordPressの投稿一覧や投稿詳細で、投稿タイプの情報を取得・表示する方法をご紹介いたします。
投稿タイプの情報を取得することで、スラッグをページのクラスとして追加したり、ラベルをパンくずやタイトルとして表示することができます。
投稿詳細で投稿タイプの情報を取得・表示する方法
まずは、投稿詳細で投稿タイプの情報を取得・表示する方法です。
投稿詳細で投稿タイプ名を取得するには、get_post_typeを使います。
<?php $post_type = get_post_type($post); ?>
$postには投稿IDまたは投稿オブジェクトを指定しますが、未指定の場合は現在の投稿が対象になりますので、single.php内では省略でOKです。
<?php $post_type = get_post_type(); ?>
これでカスタム投稿名が取得できます。例えば、通常の投稿の場合、$post_typeには「post」が代入されます。
続いて、ラベルなどの情報を取得するには、get_post_type_objectを使います。
<?php
$post_type = get_post_type(); //投稿タイプ名(スラッグ)の取得
$post_type_object = get_post_type_object($post_type); //投稿タイプの情報を取得
echo $post_type_object->name; //投稿タイプ名(スラッグ)
echo $post_type_object->label; //複数形のラベル
echo $post_type_object->labels->name; //複数形のラベル
echo $post_type_object->labels->singular_name; //単数形のラベル
?>
ラベルを表示するだけなら、以下のような書き方でもOKです。
<?php
$post_type = get_post_type();
echo get_post_type_object($post_type)->label;
?>
投稿一覧で投稿タイプの情報を取得・表示する方法
投稿一覧(投稿タイプのアーカイブ)では、get_query_varでカスタム投稿名を取得します。
<?php $post_type = get_query_var('post_type'); ?>
あとは投稿詳細と同じように、get_post_type_objectで投稿タイプの情報を取得して表示します。
<?php
$post_type = get_query_var('post_type'); //投稿タイプ名(スラッグ)を取得
$post_type_object = get_post_type_object($post_type); //投稿タイプの情報を取得
echo $post_type_object->name; //投稿タイプ名(スラッグ)
echo $post_type_object->label; //複数形のラベル
echo $post_type_object->labels->name; //複数形のラベル
echo $post_type_object->labels->singular_name; //単数形のラベル
?>
タクソノミーアーカイブで投稿タイプの情報を取得・表示する方法
カテゴリー一覧やタクソノミー一覧では、get_query_varとget_taxonomyを組み合わせて投稿タイプ名を取得します。
<?php
$taxonomy = get_query_var('taxonomy'); //タクソノミー名(スラッグ)の取得
$post_type = get_taxonomy($taxonomy)->object_type[0]; //投稿タイプ名の取得
?>
「get_query_var(‘taxonomy’)」でタクソノミー名を取得し、get_taxonomyで取得されるタクソノミーの設定情報からそのタクソノミーが利用可能な投稿タイプの1つ目を取得しています。
ここまで取得できたら他と同様にget_post_type_objectで投稿タイプの情報を取得して表示できます。
<?php
$taxonomy = get_query_var('taxonomy'); //タクソノミー名(スラッグ)の取得
$post_type = get_taxonomy($taxonomy)->object_type[0]; //投稿タイプ名の取得
$post_type_object = get_post_type_object($post_type); //投稿タイプの情報を取得
echo $post_type_object->name; //投稿タイプ名(スラッグ)
echo $post_type_object->label; //複数形のラベル
echo $post_type_object->labels->name; //複数形のラベル
echo $post_type_object->labels->singular_name; //単数形のラベル
?>
ちなみに、タクソノミーアーカイブでは、投稿タイプと同じようにget_taxonomyで取得した情報からタクソノミー名やラベルを表示することができます。
<?php
$taxonomy = get_query_var('taxonomy'); //タクソノミー名(スラッグ)の取得
$tax_data = get_taxonomy($taxonomy); //タクソノミーの情報を取得
echo $tax_data->name; //タクソノミー名(スラッグ)
echo $tax_data->label; //複数形のラベル
echo $tax_data->labels->name; //複数形のラベル
echo $tax_data->labels->singular_name; //単数形のラベル
?>
あとがき
テーマを制作していると投稿タイプ名やラベルを取得したいケースが結構ありますね。
投稿一覧や投稿詳細で投稿タイプの情報を取得・表示したい時は、ぜひ参考にしていただければと思います。