以下の形式のメニューがあります。
Treatment
-Beauty
--Services
--Products
-Surgery
-washing
私は以下のリンクをたどっている: WordPressで親ページの子ページのリストを表示する方法
ただ、「美」ページのサブページは欲しくありません。私は "治療"サブページだけが欲しいのです。
このコードをfunctions.phpに追加してください。コードの説明は以下の通りです。
function wpb_list_child_pages() {
global $post;
if ( is_page() && $post->post_parent )
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' .$post->post_parent . '&echo=0' );
else
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
if ( $childpages ) {
$string = '<ul>' . $childpages . '</ul>';
}
return $string;
}
add_shortcode('wpb_childpages', 'wpb_list_child_pages');
説明
コードは、ページに親があるかどうか、またはページ自体が親であるかどうかを確認します。親ページの場合は、それに関連付けられている子ページが表示されます。子ページの場合は、その親ページの他のすべての子ページが表示されます。最後に、これが子ページも親ページもない単なるページである場合、コードは単純に何もしません。そのため、このショートコード[wpb_childpages]
を子ページが表示されるページに追加するだけです。
最初のレベルで停止するように更新します
if ( is_page() && $post->post_parent )
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0&depth=1' );
else
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0&depth=1' );
私のlocalhostでうまくいった私のテスト出力:
テスト1
-t1
--tt1
-t2
そして、私がTest1ページでそのショートコードを書いたときに表示される出力は以下の通りです。
t1
t2
現在のページのサブページだけが欲しいなら、これを使います:
function wpb_list_child_pages() {
global $post;
if ( is_page() && $post->ID )
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0&depth=2' );
if ( $childpages ) {
$string = '<ul>' . $childpages . '</ul>';
}
return $string;
}
add_shortcode('wpb_childpages', 'wpb_list_child_pages');