> Wordpress > Wordpressで投稿タイプを取得・表示する方法

Wordpressで投稿タイプを取得・表示する方法

Wordpressのテンプレートで投稿タイプの情報を取得するには、get_post_type()関数を利用すると便利です。

投稿を指定して投稿タイプを取得する

$post_type = get_post_type( $post );

上記のようにすると、$post の記事の投稿タイプを取得できます。
$post には、投稿オブジェクトまたは投稿のIDを利用します。
未入力であった場合は現在の投稿が対象となりますので、シングルページなどで現在の投稿の投稿タイプを取得できます。

戻り値は、投稿タイプのスラッグになります。

参考リンク:関数リファレンス/get post type

アーカイブページで投稿タイプを取得する

アーカイブページで投稿タイプを取得するには、get_post_type() ではなく get_query_var() を利用します。

$post_type = get_query_var('post_type');

戻り値は、投稿タイプのスラッグになります。

参考リンク:WordPress:現在の投稿タイプをget_post_type()で取得できない場合の代替案

タクソノミーアーカイブページで投稿タイプを取得する

タクソノミーアーカイブページで投稿タイプを取得するには、get_taxonomy()get_query_var() を利用します。

$taxonomy = get_query_var('taxonomy');
$post_type = get_taxonomy($taxonomy)->object_type[0];

get_query_var() で取得したタクソノミーを get_taxonomy() に渡すとタクソノミーのオブジェクトを取得できます。
戻り値は、投稿タイプのスラッグになります。

参考リンク:WordPress:現在の投稿タイプをget_post_type()で取得できない場合の代替案

投稿タイプのスラッグから投稿タイプの名前・ディスクリプションなどを取得する

投稿タイプのスラッグから投稿タイプの名前・ディスクリプションなどを取得するには、get_post_type_object() を使用します。

$obj = get_post_type_object($post_type);

上記のようにすると、投稿タイプのオブジェクトを取得できます。
$post には、投稿タイプのスラッグを利用します。

戻り値は投稿タイプのオブジェクトです。
便利に使用できそうな値としては、

echo $obj->labels->name;         //投稿タイプ名
echo $obj->labels->singular_name;//投稿タイプ名(単数形)
echo $obj->name;                 //投稿タイプのスラッグ
echo $obj->description;          //投稿タイプのディスクリプション
echo $obj->rewrite['slug'];        //投稿タイプのパーマリンク

などがあります。

参考リンク:関数リファレンス/get post type object

この記事が気に入ったらシェアしてください

関連記事

Wordpressのカスタム投稿タイプで一覧・詳細画面を作らない方法

Wordpressのプラグイン「AddToAny Share Buttons」で任意の場所にシェアボタンを設置する方法

Wordpressのプラグイン「AddToAny Share Buttons」で任意の場所にシェアボタンを設置する方法

Wordpress Popular Postsでの表示内容をテーマ内でカスタマイズする方法

Wordpress Popular Postsでの表示内容をテーマ内でカスタマイズする方法

Wordpressの投稿からカテゴリーやタグを削除する方法

Wordpressの投稿からカテゴリーやタグを削除する方法

Wordpressで記事のIDから記事内の一番目にある画像を取得する関数

Wordpressで記事のIDから記事内の一番目にある画像を取得する関数

Wordpressのget_terms()で特定のカスタム投稿タイプの公開記事のみcountの対象にする方法

Wordpressのget_terms()で特定のカスタム投稿タイプの公開記事のみcountの対象にする方法

2 Comments

sano

こちらのページを拝見して カスタム投稿にはタクソノミページを表示させることはできるのですが、通常の投稿タイプも退化して表示することを試したのですができないです。https://illbenet.jp/view/wordpress_get_post_type
↓ house post を追加してタクソミニページでは表示させることがwordpress では不可能でしょうか? ご返信お待ちしております。よろしくお願いします。
function create_my_custom_post_types()
{
    // "house" というカスタム投稿タイプを登録
    register_post_type(
        'house', // 投稿タイプ名
        array(
            'label' => 'House', // 管理画面のメニューに表示される名前
            'labels' => array(
                'name' => 'Houses',
                'singular_name' => 'House',
                'add_new' => '新規House追加',
                'edit_item' => 'Houseの編集',
                'view_item' => 'Houseを表示',
                'search_items' => 'Houseを検索',
                'not_found' => 'Houseは見つかりませんでした。',
                'not_found_in_trash' => 'ゴミ箱にHouseはありませんでした。',
            ),
            'public' => true, // 公開
            'description' => 'カスタム投稿タイプ「House」の説明文です。',
            'hierarchical' => false, // 階層構造にしない
            'has_archive' => true, // アーカイブを有効にする
            'show_in_rest' => true, // Gutenberg を有効化
            'supports' => array(
                'title',
                'editor',
                'thumbnail',
                'excerpt',
                'custom-fields',
                'revisions',
                'comments',
                'trackbacks',
                'page-attributes',
                'post-formats',
            ),
            'menu_position' => 5, // メニューの位置
            'rewrite' => array('slug' => 'house'), // パーマリンクのベースを house に設定
        )
    );

    // カスタムタクソノミー "house-type"(カテゴリー形式)の登録
    register_taxonomy(
        'house-type', // タクソノミー名
        'house', // このタクソノミーが使われる投稿タイプ
        array(
            'label' => 'House Type', // タクソノミーのラベル
            'labels' => array(
                'name' => 'House Types',
                'singular_name' => 'House Type',
                'popular_items' => 'よく使うHouse Type',
                'edit_item' => 'House Typeを編集',
                'add_new_item' => '新規House Typeを追加',
                'search_items' => 'House Typeを検索',
            ),
            'public' => true,
            'hierarchical' => true, // カテゴリー形式
            'show_in_rest' => true, // Gutenberg で表示
            'rewrite' => array('slug' => 'house-type'), // パーマリンクのベースを house-type に設定
        )
    );

    // カスタムタクソノミー "region"(タグ形式)の登録
    register_taxonomy(
        'region', // タクソノミー名
        'house', // このタクソノミーが使われる投稿タイプ
        array(
            'label' => 'Region', // タクソノミーのラベル
            'labels' => array(
                'name' => 'Regions',
                'singular_name' => 'Region',
                'popular_items' => 'よく使うRegion',
                'edit_item' => 'Regionを編集',
                'add_new_item' => '新規Regionを追加',
                'search_items' => 'Regionを検索',
            ),
            'public' => true,
            'hierarchical' => false, // タグ形式
            'show_in_rest' => true, // Gutenberg で表示
            'rewrite' => array('slug' => 'region'), // パーマリンクのベースを region に設定
        )
    );

    // 親子関係のタクソノミーページのURLを設定
    register_taxonomy(
        'parent_taxonomy', // タクソノミー名
        'house', // このタクソノミーが関連づけられる投稿タイプ
        array(
            'label' => '親タクソノミー', // タクソノミーのラベル
            'hierarchical' => true, // 親子関係を持つ
            'show_in_rest' => true, // Gutenberg で表示
            'rewrite' => array('slug' => 'houses', 'with_front' => false), // タクソノミー名を削除し、スラッグを「sale」に設定
        )
    );
}
  • 2025/02/04 02:27:23

yuricolo

コメントに気づくのが遅くなりもうしわけありません。
恐れ入りますが、個別の環境での問い合わせには対応できません。
おそらく、house という投稿タイプに紐づくカスタムタクソノミー[house-type]及び[region]で[house]という投稿タイプ名を取得したいのだと思いますが、その事自体は可能です。
ただ、親記事で提示している方法で可能かどうかは検証しておりませんので、ご自身の環境(WPバージョン・サーバーなど)で対応できるかどうかご確認ください。
  • 2025/04/10 23:55:06

Comment Form

コメント投稿はこちらをクリックしてください
  • コメントを入力してください。
登録フォーム
Name
Mailaddress
URL
Message
Postkey
(スパム対策に、投稿キー を半角で入力してください。)