网站中有多种发布类型(post_type)的站长或许会有这样的体会,无论特殊需求的文章汇总(最热,相关,随机)还是是 category 和 tag 这些 taxonomy 分类的归档,总是麻烦些,有的可以通过更改原有函数的参数来实现,有的甚至需要手动写一些查询,那么我们应该怎样在代码层进行优化?
对于 WordPress 网站中有自定义 post_type 的站长来说,我们有必要自己定义一些函数,用于页面模板设计时的调用,代码层面的优化我一直坚守的原则——结构清晰,减少重复。
有不少 WordPress 用户在主题功能扩展的时候,很多新手对 wordpress 函数方法不熟悉往往习惯页面中直接写 SQL 查询,因为简单,但是结果就是需要一次写一次,增大了文件体积不说,管理起来也是一片混乱,到了维护后期还得整理。
基于上面提到的原则,我们有必要在 function 中定义一些经常用到的并且多 post_type 通用的函数,方便调用。本篇文章我们就以侧边栏经常调用的网站目录和网站标签为例。
首先应该了解网站的结构,例如当前发布类型有两个最主要的大类分别是 videos 和最常见的 post。对应的 taxonomy 分类法分别是:
其次,我们应该弄清楚,wordpress 是否给我们提供了可以实现需求的原生函数。
此次本文提到的两个应用,都可以找到原生函数。因此我们只需要根据需求挑选出参数,用变量替代即可。如,对于标签云的调用,我们使用 wp_tag_cloud()就足够:
<?php wp_tag_cloud( $args ); ?>
<?php $args = array(
'smallest' => 8,
'largest' => 22,
'unit' => 'pt',
'number' => 45,
'format' => 'flat',
'separator' => \"n\",
'orderby' => 'name',
'order' => 'ASC',
'exclude' => null,
'include' => null,
'topic_count_text_callback' => default_topic_count_text,
'link' => 'view',
'taxonomy' => 'post_tag',
'echo' => true,
'child_of' => null(see Note!)
); ?>
对于分类目录,我们自然想到了 wp_list_cats(),不过此函数已经被 wp_list_categories()给替代了。
<?php wp_list_categories( $args ); ?>
<?php $args = array(
'show_option_all' => '',
'orderby' => 'name',
'order' => 'ASC',
'style' => 'list',
'show_count' => 0,
'hide_empty' => 1,
'use_desc_for_title' => 1,
'child_of' => 0,
'feed' => '',
'feed_type' => '',
'feed_image' => '',
'exclude' => '',
'exclude_tree' => '',
'include' => '',
'hierarchical' => 1,
'title_li' => __( 'Categories' ),
'show_option_none' => __('No categories'),
'number' => null,
'echo' => 1,
'depth' => 0,
'current_category' => 0,
'pad_counts' => 0,
'taxonomy' => 'category',
'walker' => null
); ?>
我们的代码是针对侧边栏的调用设计的,那么在写的时候注意 class=“widget”,以搭配样式表。
<?php
//新标签调用
function newtags($title,$type,$num){
echo'<div class="widget"><h3><span>',$title,'</span></h3>';
wp_tag_cloud('smallest=8&largest=20&taxonomy='.$type.'&number='.$num);
echo'</div>';
}
//分类目录调用
function newcats($title,$taxonomy){
echo'<div class="widget"><h3><span>',$title,'</span></h3></div>';
wp_list_categories('id=tougaocategorg&show_count=1&hierarchical=1&hide_empty=0&taxonomy='.$taxonomy);
echo'<div>';
}
?>
比如,我们想在侧边栏调用一个网站视频的分类目录,我们就可以写
<?php
<div id="sidebar">
newcats('网站视频分类','videoscategory')
</div>
?>
本文只是代码优化的一个小小的实例,原则是减少重复,方法是利用 wp 原生函数,合理设计参数变量。实际测试中,wp_list_cats()也可以完成上面的需求。
专业提供WordPress主题安装、深度汉化、加速优化等各类网站建设服务,详询在线客服!