如何为网站的每个部分显示不同的辅助导航菜单?

时间:2013-11-13 作者:Kit Johnson

我的网站分为三个部分,如下所示:

灵气基础知识(第499页)

–第1.1页

–第1.2页

–第1.3页

练习(&L);研究(第501页)

–第2.1页

–等

课程(第471页)

–第3.1页

–等。

这些都显示在页面顶部的主菜单中。当你将鼠标悬停在“灵气基础知识”上时,你会看到一个手风琴手写下了第1.1、1.2和1.3页。

我想在侧栏中创建一个二级菜单,它只显示同级页面(和父页面)。

例如,当用户浏览“灵气基础知识”部分的任何页面时,包括“灵气基础知识”页面本身,他们会看到指向该部分中所有页面的链接(1.1、1.2、1.3)。他们看不到其他部分的页面。当他们浏览第二节中的页面时,同样的方法也会起作用。

我想为所有新页面自动创建此菜单。我宁愿不安装任何新插件,尽管我已经使用了“小部件逻辑”,这可能会有所帮助。

1 个回复
最合适的回答,由SO网友:Kit Johnson 整理而成

第一阶段是为站点的每个部分创建单独的菜单。创建三个菜单,分别为“灵气基础”、“练习和”;“学习”和“课程”。将所有相关页面添加到每个菜单。

要使这些菜单显示在侧栏中,请使用三个单独的“自定义菜单”小部件添加它们。如果你现在查看你的网站,你会发现所有的菜单都出现在每个页面上。你已经走到一半了。

为了确保只有适当的菜单出现在适当的页面上,您可以使用小部件逻辑。您需要创建一个测试来查看是否应该显示自定义菜单。例如,您只希望在“灵气基础知识”、1.1、1.2或1.3页中的任何一页上显示第一个菜单。

wordpress(我知道)中没有内置的功能可以轻松测试这一点。以下代码段(来自wordpress codex) 然而,这将允许您轻松地执行此操作,并为您提供一个新函数“is\\u tree”。

function is_tree( $pid ) {      // $pid = The ID of the page we\'re looking for pages underneath
global $post;               // load details about this page

if ( is_page($pid) )
    return true;            // we\'re at the page or at a sub page

$anc = get_post_ancestors( $post->ID );
foreach ( $anc as $ancestor ) {
    if( is_page() && $ancestor == $pid ) {
        return true;
    }
}

return false;  // we arn\'t at the page, and the page is not an ancestor
}
现在需要做的就是使用函数is\\u tree(\'id\')来查看当前页面是页面还是相应页面的子页面。因此,对于第一部分,您的测试将如下所示:is\\u tree(\'499\')。

下面是一个屏幕截图,显示其工作原理:

A screenshot to show how to use widget logic to add custom menus depending on the parent page

结束

相关推荐

Wordpress Navigation

我的菜单html代码如下:<div class=\"menu\"> <ul> <li><a href=\"index.php\" >Home</a></li> <li><a href=\"aboutus.php\" >About Us</a></li> <li><a href=\