wordpress按层级显示分类

想要定制一款wordpress主题,那么就必须要有很多自己diy的地方, 比如想要自己做一款wordpress按层级显示分类的类似下图的效果

这种样式的导航,首先让用户很清楚的知道自己所在的位置,其次对于搜索引擎来说也是很好的一个搜索优化。

实现第一步:在wordpress主题目录下的functions.php中添加两个函数,这两个函数第一个由两个参数,它的参数既可以是字符串类型的数据,也可以是一个数组类型的数据。

function hx_url_trim($link, $name){
    return "<a href=\"$link\" title=\"$name\">$name</a>";
}

function get_hierarchy_category_path(){
    //$wp_query是整个wordpress的全局变量,在任何地方都能够使用
    global $wp_query;
    //获取当前请求的参数中的分类ID
    $catid=$wp_query->query_vars['cat'];
    //获取首页的地址
    $home_url=hx_url_trim(home_url( '/' ),'首页');

    $result="";
    //采用迭代的方法获取上一级的分类信息
    while($catid!=0){
        $current_cat=get_category($catid);
        $current_cat_link = get_category_link( $catid );
        $current_cat_url=hx_url_trim(esc_url( $current_cat_link ),$current_cat->name);
        if($result){
            $result = "$current_cat_url > $result";
        } else {
            $result = $current_cat_url;
        }
        //将父亲的分类ID付给迭代变量
        $catid=$current_cat->category_parent;
    }
    $result = "$home_url > $result";
    return $result;
}

第一个函数是为了省事,用其生成一个URL链接。第二个函数中,主要用到了wordpress的全局请求参数对象$wp_query还有分类的一些函数。

在开发过程中,随时都可以使用打印一下对象的内容,就知道怎样获取参数数据了。

实现第二步:修改category.php模板文件替换导航

找到模板目录下的category.php文件,找到这个文字:

<h1 class="page-title">
<?php
printf( __( 'Category Archives: %s', 'twentyten' ), '<span>' . single_cat_title( '', false ) . '</span>' );
?>
</h1>

然后替换成调用我们编写的函数:

<h1 class="page-title">
<?php
echo get_hierarchy_category_path();
?>
</h1>

用的最多的应该就是全局变量$wp_query,当客户端请求服务器时,除了初始化配置,wordpress做的第一件事就是用HTTP请求参数初始化该全局变量,这样在代码的任何地方都可以随时引用。比如本文的category.php中并没有给函数传递参数,因为在get_hierarchy_category_path中我们可以使用$wp_query这个全局变量获取所需的所有信息。

我爱主题网 自2012
主题:260+ 销售:1000+
兼容浏览器

电话咨询

7*12服务咨询电话:

133-7205-6573

微信咨询