如何在PHP

时间:2019-01-24 10:14:27

标签: php wordpress

使用具有侧边栏菜单的wordpress制作网站,该菜单会自动创建具有这些设置的页面列表。显示所有父页面。显示当前页面的孩子和父母。这种结构需要在所有深度上显示。

问题。需要建议如何获取侧边栏菜单以显示页面,如下例所示。 一切都是由PHP,CSS手工完成的。插件是不可能的。

Example 1: (Current page is sub page 3):

-page1
    -sub page 1
    -sub page 2
    -sub page 3
        -sub article 1
        -sub article 2
-page2
-page3
-page4

Example 2 (current page is page1):

-page1
    -sub page 1
    -sub page 2
    -sub page 3
-page2
-page3
-page4

下面是示例我们如何管理现在显示的页面以及当前拥有的PAGE.PHP和FUNCTIONS.PHP中的代码。代码处于这种状态,它显示了该当前“深度”的所有页面。

Like this (if current page is one of parents:

-page1
    -sub page 1
    -sub page 2
    -sub page 3
        -sub article 1
        -sub article 2

-page2
    -sub page 1
    -sub page 2
        -sub article 1

-page3
    -sub page 1
    -sub page 2

-page4
    -sub page 1
    -sub page 2

Or if current page is sub page it shows like this (shows no parents):

    -sub page 1
    -sub page 2
    -sub page 3

page.php

<?php
if ($post->post_parent) {
    $page = $post->post_parent;
} else {
    $page = $post->ID;
}

$children = wp_list_pages(array(
    'child_of' => $page,
    'echo' => 0,
    'title_li' => ''

));

if ($children) {
    echo "<ul>\n".$children."</ul>\n";
} 
?>

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');

0 个答案:

没有答案