WordPress 固定ページやカスタム投稿タイプで「親ページ」が選択できない時

  • WordPress

先日 WordPress の固定ページ記事を書いていたところ、親ページの指定ができませんでした。プラグインをすべて切っても表示されず、特にカスタマイズもしていなかったのでおかしいなと思っていたんですが、調べてみると原因は単純なものでした。

(1)すべての投稿が非公開、もしくは下書き状態

しょうもない話かもしれませんが、今回僕が陥っていたのはこれが原因でした。固定ページや階層化構造を持つ投稿タイプ( hierarchical が true )で非公開記事として投稿しても、その記事を親として設定することができません。

下書きならともかく、非公開記事で投稿した記事も選べないとは思っていませんでした…。
子は非公開設定できても、親だけは公開しなくてはならないのは少し不便な場面もありそうです。

(2)register_post_type() で投稿タイプを登録したときに、hierarchical が未設定、もしくは false

投稿タイプには「投稿」のような構造化を持たないものと、「固定ページ」のような親を持てる階層化できるものがあります。この違いは hierarchical が true かどうかです。true でないと投稿は親を持つことができません。カスタム投稿タイプを functions.php などを使って自分で実装している場合は、引数の hierarchical を確認してください。

$args = [
   ...
   'hierarchical' => true,
   ...
];
register_post_type( $args );