WordPressの固定ページでは、ページ属性で「親ページ」を選択することで、ページに階層を持たせることができます。
例えば、”お問い合わせ”と”お問い合わせ完了”で親子関係を持たせることで、お問い合わせは”/contact”、お問い合わせ完了は”/contact/thanks”といったURL構造にすることが可能です。
ただ、この親ページの選択肢には、デフォルトではすでに公開済みのページしか表示されません。非公開や下書きのページは親ページとして選択することができないようになっています。
運用開始しているサイトにページを追加する場合、非公開で作成しクライアントのチェックが完了してから公開、という流れになることは多いかと思います。そうなると、非公開ページを親ページとして選択できないと不都合が出てくるケースもあります。
そんな時のために、まだ公開されていないページを親ページとして選択できるようにする方法をご紹介したいと思います。
公開されていないページを親ページとして選択できるようにする方法
※今回ご紹介する方法は、使用するpage_attributes_dropdown_pages_argsフックのドキュメントにも投稿されていますが、ブロックエディタでは機能しませんでした。Classic Editorが導入されている環境でしか機能しませんので悪しからず。
適用しているテーマのfunctions.phpに以下コードを追記します。まだ公開されていないページも、編集画面とクイック編集で親ページとして選択できるようになります(quick_edit_dropdown_pages_argsはクイック編集用のフックです)。
function my_dropdown_pages($dropdown_pages_args) {
$dropdown_pages_args['post_status'] = array('publish', 'future', 'draft', 'pending', 'private'); //選択を許可する公開ステータス
return $dropdown_pages_args;
}
add_filter('page_attributes_dropdown_pages_args', 'my_dropdown_pages');
add_filter('quick_edit_dropdown_pages_args', 'my_dropdown_pages');
上記の例ではすべての公開ステータスを親ページの選択肢に表示するようにしています。必要ないステータスは削除してください。
publish | 公開済み |
future | 予約済み |
draft | 下書き |
pending | 承認待ち |
private | 非公開 |
あとがき
クラシックエディタ限定の方法なので、かなり限定的なケースでしか活用できないかもですね。そもそもページを公開してから親子関係を設定すれば良いので、さらに活用できるシーンは少ないですかね。
念のための備忘録でございました。