有时我得到一项业务,我的客户要求建立一个完全由众多网页构成的网站——没有花哨的数据库查询,也没有额外的模板文件,只有在分层结构中的一大堆网页。
对用户来讲,一个非常庞大且内嵌有众多网页的网站,如果导航没有做好的话,就会变得非常混乱而难以操作。因而,在每一个网页页面层次的当前分支中,提供一个包含所有页面的导航列表就显得很有帮助了。
这个过程包含两个阶段:
1.确定当前页面在网站结构中的位置
2.输出页面列表
我打算在一个插件中建立这个函数,从而保证其主题的独立性。因此,第一步便是建立一个插件文件,我命名其为tutsplus-list-subpages.php。
打开你的插件文件,添加以下代码:
在代码说明中包含函数名称这一点是非常有用的,因为它意味着当你在一个网站上安装你的插件的时候,你无须去检查代码以提醒你自己如何去使用它。
为了找到当前页面在网站层次结构中的位置,你需要完成以下4件事情:
那么就让我们来试一试吧!
首先使用一个条件标签来建立一个新的函数,用来检查当前页面:
最后,你需要定义如果当前页面没有母页面,即它本身就是顶级初始页面的情况。在此情况下,你想要输出当前页面的ID,就要将下列代码添加到你的函数中:
return$post->ID;整个函数现在看起来是这样的:
首先建立一个新的函数,用来检查当前页面:
在条件标签中你首先要做的就是将已经确认的顶级页面ID添加到tutsplus_check_for_page_tree()函数中,实现代码如下:
$ancestor=tutsplus_check_for_page_tree();接着,我们来定义get_pages()函数的参数:
$args=array('child_of'=>$ancestor,'depth'=>'-1','title_li'=>'',);让我们来快速回顾一下我使用的参数:
下一步,你需要运行list_pages()函数:
$list_pages=get_pages($args);输出页面列表既然你已经建立好了你的网页,那么接下来你需要输出它们的链接。为了做到这一点,首先你要检查list_pages()是否返回一个空数组:
if($list_pages){}在检查中,第一个链接指向顶级页面:
wp_list_pages($args);这将显示页面标题的链接列表。
完整的tutsplus_list_subpages()函数全文应当如下:
例如,如果你的主题在sidebar.php文件中有一个tutsplus_sidebar钩子,你可以将以下代码添加到你的functions.php文件中:
如果你是在你的客户网站上使用这些代码,你需要确保客户了解如何分层创建页面,然而这并不意味着客户需要做全面仔细的考虑。
如果你想要这些代码对客户来说变得更加人性化的话,你可以创建一个WordPress小工具(或者也许一段简码就够了)来输出页面列表,而这又是另一个话题了。
由stonetan@WordPress大学原创翻译,未经允许,禁止转载和采用本译文。