【WordPress】カテゴリー・固定ページなどの祖先オブジェクトのIDを取得|get_ancestors()

今回は、固定ページやカテゴリーなど、階層を持つオブジェクトの祖先オブジェクトのIDを取得する方法となります。

階層を持つオブジェクトの祖先オブジェクトのIDを取得する例

階層を持つオブジェクトの祖先オブジェクトのIDを取得するには、get_ancestors関数を利用します。

以下、カテゴリーと固定ページの祖先オブジェクトのIDを取得する例となります。

カテゴリーの場合

例えば以下の階層のカテゴリーがあるとします。※以下の()内はオブジェクトのID。

ファッション(8)>アイテム(12)>Tシャツ(20)

上記の階層の場合に、カテゴリー「Tシャツ」の祖先オブジェクトのIDを取得するソースコードは以下となります。

<?php $ancestors_ids = get_ancestors( 20, 'category' ); ?>

上記例の戻り値は以下となります。

Array (
	[0] => 12
    [1] => 8
)

固定ページの場合

例えば以下の階層の固定ページがあるとします。※以下の()内はオブジェクトのID。

企業情報(4)>プレスリリース(21)>新商品●●●を発売(84)

上記の階層の場合に、固定ページ「新商品●●●を発売」の祖先オブジェクトのIDを取得するソースコードは以下となります。

<?php $ancestors_ids = get_ancestors( 84, 'page' ); ?>

上記例の戻り値は以下となります。

Array (
	[0] => 21
    [1] => 4
)

get_ancestors()について

get_ancestors関数では、指定したオブジェクトの祖先オブジェクトのIDを配列で返します。指定したオブジェクトに親がない場合は、空の配列を返します。

また、戻り値の祖先オブジェクトの IDの配列の順序は、階層の下から上の順となります。

パラメータ

get_ancestors( $object_id, $object_type, $resource_type );
$object_id
子オブジェクトのIDを指定。
$object_type
取得するオブジェクトの種類を指定。固定ページの場合は'page' 、カテゴリーの場合は'category'を指定。 
その他、階層を持った投稿タイプ、タクソノミーを指定できます。
$resource_type(省略可)
取得するオブジェクトタイプの種類を指定。カスタム投稿タイプの場合は'post_type'、 カスタムタクソノミーの場合は'taxonomy' を指定。
省略すると$object_type を調べて自動設定します。

参考サイト、参考書籍

コメントまたはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。Twitterで返信する場合はコチラから。