【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 を調べて自動設定します。