在 WordPress 文章页显示当前位置

经过测试,我推荐另一个显示WordPress当前位置的方法,因为以下的方法只适合用于单独文章页面,当你使用二级分类时,会出现进入一级分类页面显示出某个二级分类的错误。我错了,两种方法都对一级目录都显示不正确(如果有二级目录的话)。

很多WordPress也提供了此功能,如果你的主题没有,不妨自己动手试试。

两个函数

get_the_categoryget_category_parents

get_the_category 的作用是获取文章的所属分类列表(如果属于多个分类的话),返回一个分类数组,函数原型如下:
get_the_category( $id = false )
参数$id是文章的post id,默认为当前文章的post id(用于Loop循环中)。

get_category_parents 的作用是获取指定分类id的所有父级分类,函数原型如下:
get_category_parents( $id, $link = false, $separator = ‘/’, $nicename = false, $visited = array() )

第一个参数$id是必须的,需要传入分类ID(category id),其它几个参数为可选
第二个参数$link标识是否需要超级链接,如果为true,返回的分类都带有链接,点击后显示分类下的所有文章。
第三个参数$separator是分类之间的分隔符,默认是“/”,你可以把它改成“>>”或者其它样式。
第四个参数$nicename标识是否显示分类别名,默认为false,即不显示别名。
第五个参数$visited是一个数组,保存已经遍历的分类,$visited数组中的分类不会被再次遍历。这里我们不需要传入这个参数。

如果你想进一步了解get_the_category和get_category_parents,可以参看它们的源代码:wp-includes\category-template.php

实现方法

编辑模板single.php文件,找到下列代码:

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

加入以下代码:

<p>
当前位置: <a href="http://domety.com/" title="首页">首页</a>>><?php $categorys = get_the_category(); $category = $categorys[0];echo(get_category_parents($category->term_id,true,’>>’)); ?> 阅读正文
</p>

这里有个问题需要注意:在你写文章的时候,最好把文章只归为一个单独的分类中,因为这段代码会自动查找该分类的父级分类。如果你把文章归为不同的类别下面,这个方法也只显示其中的一个分类路径。

提示: 本文采用 BY-NC-SA 协议进行授权,转载请保留链接。

[ Ctrl + Enter ]

  1. 网络营销顾问

    谢谢分享,wordpress用得这么多,跟大家的分享有关。