Template Tags(模板标签)使用指南
在WordPress里面,有一类函数,他们被称为Templete Tags,它们相比于普通的函数,有一个共通的特点。那么它们共通的特点是什么?应该如何使用模板标签呢?本文为您解答这个问题。
概念阐述
Template
_Template_的中文意思就是模板。在WordPress中,数据库里存储的一大堆文章也好、评论也好、链接也好,会按照一定的页面布局、排版形式,展现出来。这个“一定的页面布局、排版形式”,就是一个模板。比如,您的blog主页,使用的就是主页模板(home.php或者index.php),您的日志页面,使用的就是单页模板(single.php),等等。
模板都是由有经验的平面设计师和前台工程师所设计,首先由平面设计师绘制版面,然后由前台工程师编码成php、css和js。对于WordPress这样的开源产品,也有着大量的爱好者,自己身兼二职,独立完成模板制作。主页模板(home.php)、日志模板(single.php)、页面模板(page.php)等等这一大堆模板(最少只需要一个index.php,多的多达13个如hybrid这类的),有着统一的风格,他们往往由同一人设计,并且打包在一起发布。这个打好的包,我们称之为主题(Theme)。
Template Tag
_Template Tag_的中文翻译是模板标签。(就我个人来看,这个翻译是很糟糕的。至少我一眼看去,不明白这个东西是干啥用的。不过大家貌似都这么叫,所以,我也这么叫。)模板标签的本质,是一个php函数,这一类php函数有一个共通的特点,就是它们一定会在页面上显示一些数据(如评论,日志,链接,任何数据库里的数据)。为了便于记忆,您可以这么想,在php文件中,模板标签,就是一个标记,在最后要给读者展示的页面中,这样的标记会被替换成对应的数据。一个模板就好像是一张完型填空的考卷,模板标签,就好比那一个个横线空格。
模板标签出现在一个模板中,那么该标签代表的那部分数据,就会出现在模板的那个位置。
用法指南
使用模板标签,是一件非常容易,又非常困难的事情。
有多容易?好多人,一上手,就会用了,都不需要学。他们定制自己的WP主题,并且乐此不疲,他们把自己的行为称作DIY。
有多困难?上述那些人里,一大半都不知道什么是_真正的模板标签_,只知道“那东西,写在那里,就会出现我要的”,以至于他们往往无法正确、全面、自由地使用模板标签,甚至错误地使用模板标签。
到底应该如何使用?
第一,有明确的文档说明此函数为模板标签,这个函数才是模板标签,否则,不一定是。官方文档(去看看吧)里有大量的标签可用,甚至有些插件,通过增加模板标签,来扩充WordPress的功能,典型的如WP Kit CN(去看看它的文档)。
第二,知道了哪些东西是标签,还要明白标签的使用位置。有些标签,随便写在哪里都OK,另一些标签,只能出现在特定的地方(The Loop内部)。一般,没有特别说明只能用于The Loop内部的标签,就随处可用。那个神秘的The Loop,我们后面来解释,这里先跳过。
第三,标签的本质是函数,调用函数就需要传递参数。一个函数调用长得像这个样子:
i_am_a_function(arguments);
我知道,很多人使用模板标签,都这样写,i_am_a_function();,后面是一对空的小括号。括号里是传递参数用的,但是一般为什么不传也可以?因为,这个标签的设计者,为这个标签指定了默认的参数,“如果没人告诉我,该怎么做,那么,我按照预先设定的方式工作。”模板标签如是说。所以,亲爱的读者,如果您希望模板标签按照您的要求工作,请您告诉它,应该怎么做。
参数的用法
模板标签的参数,有多种形态。这种混乱的局面,一方面是WordPress官方的编码规范没有指定造成;另一方面,各类插件开发者的背景习惯造成(有些人是C++/Java派系程序员,有些是PHP派系程序员)。
常见风格1
wp_list_bookmarks(‘title_li=&categorize=0’);
这个是WordPress标准模板标签,括号里面的内容,是一个字符串,就是所谓的参数,这种风格,我们视其为PHP派系程序员所为,另外,整个WP内部提供的模板标签,基本都是这种形态,我个人视其为事实上的标准形态。推荐插件作者都这么写。
对于亲爱的读者您,我来简单解释一下。上述例子中,是一个显示友情链接的标签,其参数字串是很有规律的,以&符号分割,第一段title_li=,这个串指定了链接分类名称,=号后面什么都没有,代表不显示名称。第二段,categorize=0,代表所有友情链接不按照其类分类显示,而是混在一起显示。
常见风格2
get_recent_comments(5, ‘
上述模板标签来自桑葚出品的中文WordPress工具箱。这种形态,我们视其为C++/Java派系程序员。这个模板标签作用是显示最近评论列表。第一个参数,表示显示数量,5条,第二个参数表明在每条前面加一个
常见风格3
$args = array(
“number” => 10,
“length” => 30,
“skipuser” => ‘Charles’
);
wkc_recent_comments($args);
上述模板标签来自本人写的WP Kit CN。这种形态,是常见风格1的变种。可以和风格1互换。所以,也是PHP派系的。这种调用方式,首先构造一个参数数组,然后把数组传递给标签。条理清楚,含义明确,书写规范。也是本人所倾向使用的标准形式。上述调用,可以写成:
wkc_recent_comments(‘number=10&length=30&skipuser=Charles’);
代表显示10条评论,每条评论30个字,不显示Charles发表的评论。
参数说明
到这里,您可能会说了,“我怎么知道应该用那个参数?参数的名字是啥?”,OK,这个问题有两个地方可以找到答案。
第一,文档,上文给出过WP文档所在地,带有超链接的,可以点进去看,一般都带有说明,一共有几个参数,每个参数设定格式,有效数值范围等等。
第二,源代码,很多模板标签没有给出文档,那么只有一个地方可以看,即源代码。源代码之下,了无秘密。“我没有能力看源代码!”,那么,很抱歉,您可能还不具备使用不带文档的模板标签的能力,请不要去使用它。
一般,如果一个模板标签不带有文档有这么几个原因。第一,该标签原作者不推荐用;第二,实验产品,不推广使用;第三,作者超级懒惰,懒得写文档(狂晕,但确实如此,比如我曾经就这样)。
总结
亲爱的读者,模板标签,说难不难,说易不易。要想正确使用,还是需要下一番功夫,阅读文档。想要挑战一下的,或者您真的是一个DIY爱好者,请您一定要阅读源代码。那样,您肯定可以看透每个模板标签的秘密,成为DIY界的一代大侠,用上人人羡慕的,“与众不同”的主题。
谢谢!