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,感慨良多,仅此以记。