By烟花易冷

WordPress 标签页主题模板开发笔记
2024-02-15

这两天在改版博客的主题,给主页加上了标签的功能。在过程中发现 WordPress 有关标签页(tag.php)开发的知识还是比较琐碎的,这里汇总一下我常用的一些代码判断,以备后续使用。

首页标签云功能

总所周知,WordPress是自带了标签云小组件的,但是自带的样式与我这套主题 wordpress-y5 样式看起来不太协调,便自己重新取数据渲染了,最终效果如图所示:

取数时,我限制了只取 top 15 的标签出来进行展示(如果把全部标签都加载出来,页面稍显凌乱)。在 function.php 的代码如下:

// 首页标签
function getIndexTags()
{
    $args = array(
        'orderby' => 'count',
        'order' => 'DESC',
        'number' => 15,
    );
    $tags = get_tags($args);

    if (count($tags) > 0):
    echo '<div id="links">';
    foreach ($tags as $tag) {
        echo '<li><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name .'('. $tag->count .')'. '</a></li>';
    }
    echo '</div>';
    endif;
}

具体 CSS 样式如下:

#links {
  width: 100%;
  background: #f1f1f1;
  float: left;
  margin-top: 20px;
  margin-bottom: 20px;
  padding: 1rem 1rem 0.6rem 1rem;
}
#links span {
  float: left;
}
#links li {
  display: block;
  float: left;
  margin-top: 0px;
  margin-bottom: 10px;
}
#links li a {
  padding: 5px 12px 5px 12px;
  line-height: 25px;
  color: #555555;
  text-decoration: none;
  transition: 200ms;
}
#links li a:hover {
  background: #dddddd;
}

在首页模板需要展示的地方,调用对应的函数即可。

文章页展示当前文章的标签

对于 WordPress 而言,如果要在文章页,展示当前文章所有的标签,并链接到对应的标签页,我是这么做的:

// 内页标签
function getSingleTags($postId)
{
    $tags = get_the_tags($postId);

    if (is_array($tags) && count($tags) > 0):
    echo '<div id="links"> <span>相关标签:</span>';
    foreach ($tags as $tag) {
        echo '<li><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name .'('. $tag->count .')'. '</a></li>';
    }
    echo '</div>';
    endif;
}

同样也是在 function.php 添加对应的函数,然后在主题模板 single.php 上进行调用,样式同主页一样,具体如图:

标签页信息展示

除了主页和文章页,我在标签文章列表中,加入了对选中标签的信息汇总,如图所示:

对应的代码比较简单,只需要在主题模板 tag.php 对应的位置添加展示即可:

   <?php
    if (is_tag()) :
    $tag = get_queried_object();
    ?>
    <h1 class="tag-info">标签 <b><a href="<?php echo get_tag_link($tag->term_id);?>"> <?php echo single_tag_title("",false);?></a></b> 下共有文章 <b><?php echo $tag->count;?></b> 篇</h1>
    <?php endif;?>

后记

第一次做 WordPress 主题开发应该已经是12年前的事情了,这一路上也见证了 PHP 的兴衰,从 PHP 5.4 用到了 PHP 8.3,从把 PHP 当做后端渲染的模板语言,到纯API,感慨良多,仅此以记。