WordPress

【超絶便利】WordPressで投稿タイプ、投稿ID、タイトル、タクソノミー、タームなどを取得する方法

WordPressで複雑なサイトを制作していると、投稿タイプ、投稿ID、タイトル、タクソノミー、タームなど諸々情報を取得したくなりますが、そのページがsingle.phpかtaxonomy.php/archive.phpかによっても変わったり、関数が色々あって頭がこんがらがります。

現在リクエストされているクエリの情報オブジェクトを取得する関数get_queried_object() は、様々な情報が取得できて非常に便利です。

get_queried_object() に限らず、良く取得したくなる情報の取得方法をまとめます。

このページさえ見返せばすぐにコピペで済んじゃう!そんなページになることを目指して更新していくつもりです。

共通

一番最初のpathの取得はWordPress限定ではないですが、結構使うので記載しておきます。

いずれのページの場合も、まずはget_queried_object()でそのページの情報を取得します。

<?php
//pathの取得
$path = $_SERVER&#91;'REQUEST_URI'&#93;;
//まずページ情報を取得
$this_obj = get_queried_object();
?>

投稿ページの場合

is_singular()trueになる条件のページの場合です。

<?php
//まずページ情報を取得
$this_obj = get_queried_object();

//カスタム投稿タイプ
$post_type = $this_obj->post_type;
//投稿タイトル
$post_title = apply_filters( 'the_title', $this_obj->post_title );
//投稿ID
$post_id = $this_obj->ID;
//タクソノミースラッグ名
if(get_the_taxonomies()):
   $tax_slug = array_keys(get_the_taxonomies()) [0] ;
else:
   $tax_slug = '';
endif;
//ターム全て取得
$terms = get_the_terms( $post_id, $tax_slug);
//現在の投稿のタームスラッグ名
$term_slug = $terms[0]->slug;
//現在の投稿のタームスラッグ名(親がある場合)
$term_parent_slug = $terms[1]->slug;
//アイキャッチ画像のURL ※現在のページ以外の場合は引数で指定
$thumbnail_url = wp_get_attachment_image_src( get_post_thumbnail_id() );
?>

タクソノミーページの場合

is_category() || is_tag() || is_tax()trueになる条件のページの場合です。

<?php
//まずページ情報を取得
$this_obj = get_queried_object();

//タクソノミースラッグ名
if(get_the_taxonomies()):
   $tax_slug = array_keys(get_the_taxonomies()) &#91;0&#93; ;
else:
   $tax_slug = '';
endif;
//タクソノミー名
$tax_name  = $this_obj->taxonomy;
//タームID
$term_id = $this_obj->term_id;
//タームスラッグ名
$term_slug = $this_obj->slug;
//ターム名
$term_name = $this_obj->name;
//投稿タイプ名
$post_type = get_taxonomy($tax_name)->object_type[0];
//投稿タイプのリンク
$post_type_link = get_post_type_archive_link( $post_type ) );
//投稿タイプのラベル
$post_type_label = get_post_type_object( $post_type )->label );
//アイキャッチ画像のURL ※現在のページ以外の場合は引数で指定
$thumbnail_url = wp_get_attachment_image_src( get_post_thumbnail_id() );
?>

アーカイブページの場合

is_post_type_archive()trueになる条件のページの場合です。

<?php
//まずページ情報を取得
$this_obj = get_queried_object();

//カスタム投稿タイプスラッグ
$post_type = $this_obj->name;
//カスタム投稿タイプラベル
$post_type_label = $this_obj->label;
//タクソノミースラッグ名
if(get_the_taxonomies()):
   $tax_slug = array_keys(get_the_taxonomies()) [0] ;
else:
   $tax_slug = '';
endif;
?>

まとめ

いかがでしょうか?お役に立てれば幸いです。

著者のイメージ画像

株式会社BringFlower
稲田 高洋(Takahiro Inada)

2003年から大手総合電機メーカーでUXデザインプロセスの研究、実践。UXデザイン専門家の育成プログラム開発。SEOにおいても重要なW3Cが定めるWeb標準仕様策定にウェブアクセシビリティの専門家として関わる。2010~2018年に人間中心設計専門家を保有、数年間ウェブアクセシビリティ基盤委員も務める。その後、不動産会社向けにSaaSを提供する企業の事業開発部で複数サービスを企画、ローンチ。CMSを提供し1000以上のサイトを分析。顧客サポート、サイト運営にも関わる。
2022年3月にBringFlowerを開業し、SEOコンサル、デザイン、ウェブ制作を一手に受ける。グッドデザイン賞4件、ドイツユニバーサルデザイン賞2件、米国IDEA賞1件の受賞歴あり。