0

我在 WordPress 中遇到第 3 级导航菜单问题。我正在使用以下代码输出 3 级导航:

    <?php $parents = wp_list_pages("title_li=&depth=1&echo=0&sort_column=menu_order");
        if($post->post_parent) {
            $siblings = wp_list_pages("title_li=&depth=1&child_of=".$post->post_parent."&echo=0&sort_column=menu_order");
            $children = wp_list_pages("title_li=&depth=1&child_of=".$post->ID."&echo=0&sort_column=menu_order");
        } else {
            $children = wp_list_pages("title_li=&depth=1&child_of=".$post->ID."&echo=0&sort_column=menu_order");
            $siblings = array();
        }
        if($parents) { ?>
            <ul class="topseiten">
            <?php echo $parents; ?>
            </ul>
        <?php }
        if($siblings) { ?>
            <ul class="unterseiten">
            <?php echo $siblings; ?>
            </ul>
        <?php }
        if($children) { ?>
            <ul class="unterunterseiten">
            <?php echo $children; ?>
            </ul>
        <?php } ?>

当我单击菜单 1 -> 菜单 2 正在显示 -> 确定

当我单击菜单 2 -> 菜单 3 正在显示时,您会看到菜单 1 -> 确定

当我点击菜单 3 -> 菜单 2 被隐藏!

有人可以在这里帮助我吗?真的很感激!

谢谢,圣诞快乐!凯文

4

2 回答 2

0

好的,找到了另一个现在完美的解决方案:

<?php
//Automatic Submenu
global $wp_query;
//Wenn die Seite ein Grandparent ist, also keine Eltern hat...
if( empty($wp_query->post->post_parent) ) 
  {
        //Herausfinden ob es Kinder gibt...
        $ich=$wp_query->post->ID;
        $children = wp_list_pages("title_li=&child_of=$ich&echo=0"); 
            if ($children) 
            {
                $parent1 = $wp_query->post->ID;
                //Menue ausgeben
                echo "<ul class='topseiten'>";
                wp_list_pages("title_li=&child_of=$parent1&depth=1");
                echo "</ul>";
            }
            else {
                echo "<ul class='topseiten'>";
                wp_list_pages("title_li=&depth=1");
                echo "</ul>";
            }
 } 

else
//hat Eltern, ist also ein parent 
 {
    $ich=$wp_query->post->ID;
    $children = wp_list_pages("title_li=&child_of=$ich&echo=0"); 
    //UND hat weitere Kinder
    if ($children) 
    {
        $parent1 = $wp_query->post->post_parent;
        //MENUE 1 mit Geschwistern aktueller Seite (Kinder von $parent1)
        echo "<ul class='topseiten'>";
        wp_list_pages("title_li=&depth=1");
        echo "</ul>";
        echo "<ul class='unterseiten'>";
        wp_list_pages("title_li=&child_of=$parent1&depth=1");
        echo "</ul>";

        $parent2 = $wp_query->post->ID;
        //Menue 2 mit Kindern aktueller Seite ($parent2)
        echo "<ul class='unterunterseiten'>";
        wp_list_pages("title_li=&child_of=$parent2&depth=1");
        echo "</ul>";

    }
    else
    {
            if(get_grandpapa(''))
            {
                $parent1 = get_grandpapa('');
                //MENUE 1 mit Geschwistern aktueller Seite (Kinder von $parent1)
                echo "<ul class='topseiten'>";
                wp_list_pages("title_li=&depth=1");
                echo "</ul>";
                echo "<ul class='unterseiten'>";
                wp_list_pages("title_li=&child_of=$parent1&depth=1");
                echo "</ul>";

                $parent2 = $wp_query->post->post_parent;
                //Menue 2 mit Kindern aktueller Seite ($parent2)
                echo "<ul class='unterunterseiten'>";
                wp_list_pages("title_li=&child_of=$parent2&depth=1");
                echo "</ul>";
            }
            else
            {
                $parent1 = $wp_query->post->post_parent;
                //NUR Menue 1 mit Geschwistern aktueller Seite (Kinder von $parent1)
                echo "<ul class='topseiten'>";
                wp_list_pages("title_li=&depth=1");
                echo "</ul>";
                echo "<ul class='unterseiten'>";
                wp_list_pages("title_li=&child_of=$parent1&depth=1");
                echo "</ul>";
            }
    }
}

?>

而这个函数我不得不放在主题的functions.php中:

function get_grandpapa($page_id){
$current_page = get_page( $page_id );
if ($current_page->post_parent > 0){
    //has at least a parent
    $parent_page = get_page($current_page->post_parent);
    if ($parent_page->post_parent > 0){
        return $parent_page->post_parent;
    }else{
        return false;
    }
}
return false; }
于 2013-01-02T12:16:45.687 回答
0

尝试用以下代码替换第 3 行

$current_parent = $post->post_parent;
$parent_post = get_post( $current_parent );
$siblings = wp_list_pages("title_li=&depth=1&child_of=".$parent_post->post_parent."&echo=0&sort_column=menu_order");
于 2012-12-24T18:25:13.563 回答