---
title: "is_post_type_hierarchical &#8211; 特定の投稿タイプが階層を持っているか判断する関数"
canonical_url: "https://olein-design.com/blog/is_post_type_hierarchical"
language: "ja"
date_published: "2024-05-10T10:59:13+09:00"
date_modified: "2024-05-10T14:15:45+09:00"
content_type: "post"
author: "久野晃司"
taxonomies:
  category:
    - "WordPress"
  post_tag:
    - "Conditional Tag"
    - "WordPress functions"
---

# is_post_type_hierarchical &#8211; 特定の投稿タイプが階層を持っているか判断する関数

`is_post_type_hierarchical()` 関数は、投稿タイプが階層を持っているかどうかを判断することができます。

目次

## is_post_type_hierarchical() 関数とは

引数に投稿タイプを設定して、その投稿タイプが階層を持っているかどうかを確認することができます。

階層とは、例えば WordPress 標準でも用意されている固定ページという投稿タイプがありますが、こちらは新規固定ページを作成する際に編集画面で「親ページ」を選択することができます。

これはつまり、これから作成するページと親子関係（＝これが階層）を持つページを指定することができるということです。

このように階層を持つことができる投稿タイプかどうかを判断するために、`is_post_type_hierarchical()` 関数は利用することができます。

また、内部では `get_post_type_object()` 関数が使われています。こちらの関数に関しても理解を深めておくと良いでしょう。

[埋め込みコンテンツ](https://developer.wordpress.org/reference/functions/get_post_type_object)

## パラメーター

| `$post_type` | 投稿タイプ名 |
| --- | --- |

## 使い方

この関数を単体で利用することはほとんどないと思いますが、動作の検証としては以下のようなコードで行うことができます。

```
if ( is_post_type_hierarchical( 'post' ) ) {
	echo "投稿は階層型だよ";
} else {
	echo "投稿は階層型じゃないよ";
}

if ( is_post_type_hierarchical( 'page' ) ) {
	echo "固定ページは階層型だよ";
} else {
	echo "固定ページは階層型じゃないよ";
}
```

アイデアとしてですが、例えば階層を持ったページを表示しているときだけ `<body>` に任意のクラス名を出力したいとします。

そういった場合には、この `is_post_type_hierarchical()` 関数で必要な処理を行い、`wp_body_class` フックで出力するということは考えられますね。

## フック

ありません。

## まとめ

あまりクラシックテーマ開発でも利用することは少ない関数かもしれませんが、WordPress コアの中では[ちょくちょく利用されている](https://github.com/search?q=is_post_type_hierarchical+repo%3AWordPress%2FWordPress&type=code)箇所もあります。

こういった関数にも触れておくことで、WordPress の奥深しさも感じることができるかもしれませんね。

[埋め込みコンテンツ](https://developer.wordpress.org/reference/functions/is_post_type_hierarchical)
