WordPress 3 自定义分类使用教程(3/4)

分享本文:
请为本文打分

使用 WordPress 自定义分类功能,可以建立起复杂系统的分类体系,可以支撑功能更为强大的网站,而不仅仅是个博客。本教程第三部分,将继续给你讲解如何在你的网站前台(主题中)显示你的WordPress 自定义分类信息。

本系列教程共分为4个部分。在阅读本部分之前,建议你首先阅读第1部分:WordPress 自定义分类发展历程;第2部分:如何在主题中添加代码来实现自定义分类

在独立文章页面显示自定义分类信息

在主题 TwentyTen 或者其他的主题中,文章内容的后面都会列出文章的类别,以及标签等。我们想在类别和标签信息之前添加上自定义分类的信息;当然如果不存在就不添加。

20101223-dispaly-wordpress-taxonomy

要做到这一点,我们需要编辑  single.php 模板文件,这个通常是用来显示单独的一篇文章的。这个 single.php 文件的地址是: [website_root]/wordpress/wp-content/themes/twentyten/single.php 。

实际上,TwentyTen 主题 1.3 alpha 中,在 single.php 文件中调用了 get_template_part() 函数来输出具体的单篇文章信息,也就是调用的了 loop-single.php 模板文件。因此,我们下面的具体修改,实际上是在 loop-single.php 中完成,但对于大部分主题而言,应该是 single.php 文件。你在修改自己的主题模板是要注意这一点。

第1步:在正确的位置添加代码

在 loop-single.php 文件中,找到如下一行:

<div class="entry-utility"></div>

这一块一般包括的是当前这篇文章的类别、标签、永久链接之类的信息。我们就要把自定义分类的信息放在这个块(div)代码上面。

如果你还找不到这个 entry_ulility 的位置,它下面往往还有另一个块(div)来显示文章导航,也就是前一篇文章,后一篇文章:

<div id="nav-below" class="navigation">

或者你可以往前找找,肯定会有一个块(div)显示具体的文章内容,这个块中一般会调用 the_content() 函数来显示文章内容:

<div class="entry-content">

注意:自定义分类信息并不是必须放到文章内容之后,文章类别信息之前。这里只是便于网友理解,稍作解释。

第2步:提取当前文章的自定义分类信息

我们通过以下方式可以获取当前文章的自定义分类的信息:

<?php
// 如果发现有自定义分类信息,
// 就在这里输出
$taxo_text = "";

// 用来检查每个自定义分类类别的列表
// 这一个是检查操作系统自定义分类体系的
$os_list = get_the_term_list( $post->ID, 'operating_system', '<strong>Operating System(s):</strong> ', ', ', '' );

这里我们调用了 WordPress 函数 get_the_term_list ,下面介绍一下他的几个参数:

  • $post->ID,当前文章的ID;
  • ‘operating_system’,这个是我们想要检查的自定义分类的内部名字。我们查询本文是否有包含这个分类的类别信息。
  • ‘Operating System(s)’ : 如果上面检查有返回值,那么这个字符串显示在返回值之前。注意:如果你喜欢,这里可以输入中文,但务必保持该文件的编码格式和你的数据库编码格式一样,否则为乱码。一般应为 UTF8 no BOM 格式。
  • ‘, ‘: 如果有多个返回值,那么用这个符号隔开。
  • : 如果没有返回值,我们就什么都不输出,隐藏这个信息。

同样,我们也调用此函数检查一下另外两个自定义分类的信息:

$ram_list = get_the_term_list( $post->ID, 'ram', '<strong>RAM Option(s):</strong> ', ', ', '' );
$hd_list = get_the_term_list( $post->ID, 'hard_drive', '<strong>Hard Drive Option(s):</strong> ', ', ', '' );

进一步了解 get_the_term_list 函数

第3步:如果有,调整输出结果的文字格式

检查一下是否有着三个分类的信息。如果有的话,添加到输出结果里,别忘了增加断行符。

// 操作系统列表
if ( '' != $os_list ) {
    $taxo_text .= "$os_list<br />\n";
}
// 内存列表
if ( '' != $ram_list ) {
    $taxo_text .= "$ram_list<br />\n";
}
// 硬盘列表
if ( '' != $hd_list ) {
    $taxo_text .= "$hd_list<br />\n";
}

第4步:如果有,显示自定义分类信息

检查一下我们以上几步的结果,是否有自定义分类信息。如果有的话,我们输出到类名为 entry-ulility 的块(div)中。

// 如果有自定义类别的信息,就输出显示
// 注意:如果没有要输出的内容,我们没有必要增加一个块(div)
if ( '' != $taxo_text ) {
?>
    <div class="entry-utility">
        <?php echo $taxo_text; ?>
    </div>
<?php
} // endif
?>

第5步:查看输入结果

访问一篇博客文章,来看看我们刚刚定义的自定义分类信息是否显示:

w-20101224-custom-taxonomy-information.png

到此,我们就成功地将分类信息输出到了文章的页面之中。如果有需要,你也可以很方便地修改输出结果的显示形式。你都会了吗?

下一部分,我们将给大家介绍,如何像类别归档、按月归档文章那样,来定制一个自定义分类体系的类别归档页面。

明天是圣诞节,我们也不搞代码研究了,下一节我们后天在发布。明天给大家带来一个圣诞节礼物,非常棒的WordPress主题,真的很棒!最后,我们 WPChina.org 祝你平安夜快乐!

请为本文打分
分享本文:


评论: WordPress 3 自定义分类使用教程(3/4)

  • 功能很强大

    淘宝网女装冬装新款 2010/12/28 4:31 下午 回复
  • 写得很详细,值得学习,

    大学生创业优惠政策 2011/01/14 12:36 上午 回复
  • 感谢分享,没有第四篇了?

    国巨代理 2011/11/09 11:00 上午 回复
  • 函数修改为下面后,只能在第一篇文章中显示,在主页调用,是只能在第一篇文章上显示,其他文章均不显示,求解,

    ID, ‘away’, ‘away team(s): ‘, ‘, ‘, ” );
    $ho_list = get_the_term_list( $post->ID, ‘home’, ‘home team(s): ‘, ‘, ‘, ” );
    $se_list = get_the_term_list( $post->ID, ‘season’, ‘season(s): ‘, ‘, ‘, ” );

    if ( ” != $aw_list ) {
    $taxo_text .= “$aw_listn”;
    }

    if ( ” != $ho_list ) {
    $taxo_text .= “$ho_listn”;
    }

    if ( ” != $se_list ) {
    $taxo_text .= “$se_listn”;
    }

    if ( ” != $taxo_text ) {
    ?>

    mnm001 2012/04/14 11:10 上午 回复
  • 怎么没看到第四篇呢,期待。。。

    xiaokun 2012/06/22 11:05 下午 回复

发表一下评论

电子邮件地址不会被公开。 必填项已用*标注

Menu Title