投稿一覧や投稿詳細で投稿タイプのスラッグやラベルを取得・表示する方法

投稿一覧や投稿詳細で投稿タイプのスラッグやラベルを取得・表示する方法

投稿一覧や投稿詳細で投稿タイプのスラッグやラベルを取得・表示する方法

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; //単数形のラベル
?>

あとがき

テーマを制作していると投稿タイプ名やラベルを取得したいケースが結構ありますね。

投稿一覧や投稿詳細で投稿タイプの情報を取得・表示したい時は、ぜひ参考にしていただければと思います。

この記事が気に入ったら
いいね!してね♪

Twitter で

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です