スタッフブログ


【WordPress】すべてのカスタムタクソノミー情報を一括取得してみた

【WordPress】すべてのカスタムタクソノミー情報を一括取得してみた

こんにちは。ウェブクリエイターの中井です。
カスタム投稿タイプを使っていると、同時にお世話になるのがカスタムタクソノミーです。
特にショッピングサイトを構築する際に、独自のタクソノミーがいくつかあるなんてこともあります。

そんなときにいちいちそのタクソノミーを指定して
情報を取得するのもスマートじゃないな~と思い
一括で情報を取得する方法を考えてみました。

カスタム投稿タイプのアーカイブページなどで情報を取得する場合


	<?php
	if( is_tax() ) {
		//タクソノミースラッグからpost_typeを取得
		$post_type = get_taxonomy($taxonomy)->object_type[0];
	}

	//投稿タイプに紐づくすべてのタクソノミースラッグ
	$taxonomies = get_taxonomies( array( 'object_type' => array( $post_type ) ) );

	//タクソノミーごとにターム情報の配列を格納する
	foreach( $taxonomies as $tax ) {
		$$tax = get_terms( $tax, array( 'hide_empty' => false ) );

		//タームメタ情報を取得
		foreach( $$tax as $term_temp ) {
			if( $term_temp ) {
				$term_temp->term_meta = get_term_meta( $term_temp->term_id );
				${$tax.'_obj'}[] = $term_temp;
			}
		}
	}
	?>
		

 

タームメタ情報を取得~のところは、get_termsで取得できる標準の情報のほかに
タームごとのメタ情報も一度に取得するために使っています。

投稿ページで取得する場合


	<?php
	//投稿タイプに紐づくすべてのタクソノミースラッグ
	$taxonomies = get_taxonomies( array( 'object_type' => array( $post_type ) ) );

	//タクソノミーごとにターム情報の配列を格納する
	foreach( $taxonomies as $tax ) {
		${$tax.'_obj'} = wp_get_object_terms( $post->ID, $tax );
	}
	?>
		

 

アーカイブページでの情報取得の場合との主な違いは、ターム情報を取得する関数
wp_get_object_terms の部分です。

取得したカスタムタクソノミー情報が格納されている変数

上記どちらの場合も


	<?php
	${カスタムタクソノミー名}_obj
	?>
		

 

という変数の中に取得したいタクソノミーのターム情報がすべて格納されています。

リコネクトへのお問い合わせ

このサイトを広める