本記事では、WordPressでカスタム投稿タイプのラベル名やスラッグを取得・表示する方法について解説しています。
- サイト運営に必須のことが学べる
- 基本的な使い方~オリジナルテーマ開発まで学べる
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
変数名/関数名にもう悩まない!
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
コードの紹介
忙しい方向けにカスタム投稿タイプのラベル名やスラッグを取得・表示するコードを載せておきます。時間のある方・コードの詳細を知りたい方は以降の解説をご参考にしてください。
<!-- ラベル名の取得 -->
<?php $label = get_post_type_object(get_post_type())->label; ?>
<!-- ラベル名の表示-->
<?php echo esc_html(get_post_type_object(get_post_type())->label); ?>
<!-- スラッグの取得 -->
<?php $name = get_post_type_object(get_post_type())->name; ?>
<!-- スラッグの表示-->
<?php echo esc_html(get_post_type_object(get_post_type())->name); ?>
get_post_type_object関数とget_post_type関数
カスタム投稿タイプのラベル名やスラッグを取得・表示するには、get_post_type_object関数を使います。基本的な使い方は以下のとおりです。
<?php get_post_type_object( $post_type ); ?>
- $post_type(必須):投稿タイプを登録した時に使用した名前。
該当する投稿タイプが存在した場合はオブジェクトを返します。もし、該当する投稿タイプが存在しなかった場合は何も返しません。
存在しなかった時の条件はnullで判定することが出来ます。
例えば、newsのカスタム投稿タイプを登録した場合は、引数($post_type)に対して「’news’」の文字を指定してあげることで投稿タイプのオブジェクトを取得することが可能ですが、これでは別の投稿タイプのページを閲覧してもnewsに関するオブジェクトしか取得することが出来ないため汎用性がありません。
これを現在閲覧している投稿タイプのオブジェクトを取得するようにするには、get_post_type_object関数の引数にget_post_type関数を指定します。get_post_type関数の基本的な使い方は以下のとおりです。
<?php echo get_post_type( $post ); ?>
$post(省略可):投稿タイプを取得したい投稿のIDまたは投稿オブジェクトを指定します。未指定の場合は現在の投稿が対象になります。
投稿タイプを返します。取得できなかった場合は、真偽値のfalseを返します。
get_post_type_object関数の引数にget_post_type関数を指定したコードは以下のとおりです。
<?php get_post_type_object(get_post_type()); ?>
get_post_type_object関数の戻り値はオブジェクトで、内容は以下のとおりです。
stdClass Object
(
[labels] => stdClass Object
(
[name] => Posts
[singular_name] => Post
[add_new] => Add New
[add_new_item] => Add New Post
[edit_item] => Edit Post
[new_item] => New Post
[view_item] => View Post
[search_items] => Search Posts
[not_found] => No posts found
[not_found_in_trash] => No posts found in Trash
[parent_item_colon] =>
)
[description] =>
[publicly_queryable] => 1
[exclude_from_search] =>
[_builtin] => 1
[_edit_link] => post.php?post=%d
[capability_type] => post
[hierarchical] =>
[public] => 1
[rewrite] =>
[query_var] =>
[register_meta_box_cb] =>
[taxonomies] => Array
(
)
[show_ui] => 1
[menu_position] =>
[menu_icon] =>
[permalink_epmask] => 1
[can_export] => 1
[show_in_nav_menus] => 1
[name] => post
[cap] => stdClass Object
(
[edit_post] => edit_post
[edit_posts] => edit_posts
[edit_others_posts] => edit_others_posts
[publish_posts] => publish_posts
[read_post] => read_post
[read_private_posts] => read_private_posts
[delete_post] => delete_post
)
[label] => Posts
)
プロパティにセットされている値はprint_rやvar_dumpで確認することが出来ます。今回は、ラベル名とスラッグを取得したいのでlabelプロパティとnameプロパティを使用しています。
<!-- ラベル名の取得 -->
<?php $label = get_post_type_object(get_post_type())->label; ?>
<!-- ラベル名の表示-->
<?php echo esc_html(get_post_type_object(get_post_type())->label); ?>
<!-- スラッグの取得 -->
<?php $name = get_post_type_object(get_post_type())->name; ?>
<!-- スラッグの表示-->
<?php echo esc_html(get_post_type_object(get_post_type())->name); ?>