私はワードプレスですべての親ページのリストを作成しようとしていました。より具体的には、パンくずリストとして使用する祖先ページのリスト。
親、親などをトップレベルまで取得したい。
たとえば、このページ構造の場合:
- ページ
- サブページ
- サブサブページ
- サブサブページ
- サブサブページ
- サブページ
サブサブサブページから呼び出されると、
- ページ
- サブページ
- サブサブページ
サブサブページから呼び出されると、
- ページ
- サブページ
get_post_ancestors()は、すべての祖先のページIDを配列として返します。
wp_list_pages()は、ページIDのコンマ区切りリストを受け入れます
implode()関数は、配列を文字列(この場合はコンマ)で結合します。
get_post_ancestorsの結果をコンマで内破することにより、wp_list_pages()に渡す祖先のページIDのコンマ区切りリストを効果的に作成します。
wp_list_pages()のデフォルトの使用法では、ネストされたリストが作成されます。深さオプションを-1に設定すると、すべてのアイテムがフラットリストに配置されます。
最後の重要なビットであるifステートメントは、親ページを一覧表示する前に、投稿に実際に親があることを確認します。親がなく、get_post_ancestors()が呼び出された場合、何らかの理由でWPサイトのすべてのページが返されます。
すべてを一緒に入れて、
<ul>
<?php
$ancestorsCSV = implode( ',' , get_post_ancestors( $post));
if ($post->post_parent){
wp_list_pages('include='.$ancestorsCSV.'&title_li=&depth=-1' );
}
?>
</ul>
私は驚くべきことにグーグル検索でそのような解決策を見つけることができませんでした。