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['REQUEST_URI'];
//まずページ情報を取得
$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()) [0] ;
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;
?>
まとめ
いかがでしょうか?お役に立てれば幸いです。