初识模板标签

7条评论

打开WordPress主题自带的模板文件header.php,我们会注意到文件中提到“我的博客名”时,和在博客页面上看到的实际名称总是不一样的。模板中的博客名称经常由一堆没有太多实际意义的箭头、括弧以及单词组成。

这是一个模板标签的例子。

下面我们开始逐步了解模板标签和模板标签的用法。

模板标签是什么

一个模板标签就是一组指示WordPress进行某个操作或者获取某些资料的代码。在header.php中,我们的WordPress博客名称的模板标签显示为:

<h1><?php bloginfo('name'); ?></h1>

在上面这个模板标签中, <?php bloginfo(); ?>包裹在H1标题标签中。其中bloginfo()标签从控制板的用户信息 选项和“设置”菜单下的“常规”选项中获取信息。而标签引号中的name则命令标签“获取博客名称”。标签中引号内的内容被称为参数

模板标签的参数

除了name参数,<?php bloginfo(); ?>模板标签还可以接收其它参数。下面我们就了解一下其中一些参数——想了解该模板标签的更多参数,请看 bloginfo()

name <?php bloginfo('name'); ?>

根据上文的描述,该参数显示博客/网站名称,用户可以在控制板“设置”菜单下的“常规”选项下设置博客名称。

description <?php bloginfo('description'); ?>

这相当于博客的“标语”,一般由“我的博客是......”等说明性语言组成。用户可以在控制板“设置”菜单下的“常规”选项下设置博客“标语”。

url <?php bloginfo('url'); ?>

需要显示WordPress博客地址或URL时,可以使用URL参数。用户可以在控制板“设置”菜单下的“常规”选项下设置博客的URL。

admin_email <?php bloginfo('admin_email'); ?>

希望显示网站管理员的邮箱地址时,不必在模板文件中输入邮箱地址,这样邮件采集器可能会获取我们的邮箱地址并向我们发送垃圾邮件。利用 bloginfo('admin_email'),邮箱地址会显示在网站访问者的页面上,而实际邮箱地址经过伪装,采集器无法识别。可以在管理菜单“设置”菜单下的“常规”选项中设置网站管理员的邮箱地址。

version <?php bloginfo('version'); ?>

有时我们还要显示所用的WordPress版本信息。WordPress默认主题的页脚模板中就包括了当前WordPress的版本信息。version <?php bloginfo('version'); ?>显示我们当前所用的WordPress版本信息。

显示WordPress版本信息的模板标签:

<p>Powered by WordPress version <?php bloginfo('version'); ?></p>
Powered By WordPress version 2.8.4

注意:version参数只能生成WordPress版本号(此处即2.8.4),而不是“Powered by WordPress version”。这些单词出现在标签之前,使用户能够在页面上看到完整的“Powered by WordPress version 2.8..4”。

如何使用模板标签

熟悉模板标签中列出的各种模板标签后,我们会发现大多数模板标签都非常简单,例如bloginfo()模板标签,但同时很多模板标签看起来很复杂。下面我们就来了解一下模板标签的用法。

从bloginfo()中可以看出,只需要模板标签中的一个词就可以改变输出结果。这个词被称为参数,参数通知模板标签进行某项操作或者获取某些资料。在bloginfo('name')中,模板标签需要获取博客/网站名称。

模板标签the_title()显示日志的标题,标题通常出现在日志正文上方。默认情况下该标签获取并显示日志标题,但同时该标签还需要进行一项操作——更改日志标题的显示效果。

默认情况下,模板标签the_title()形式如下:

<?php the_title(); ?>

显示效果如下:

Using WordPress Makes Me Smile

假设此时我们需要以某种方式高亮显示日志标题,例如利用图形或字符实体(如箭头或是项目符号)。我们可以在标题前加上一个日币(yen)符号¥。

模板标签the_title()接收的参数包括:

<?php the_title('before', 'after', display); ?> 

此时我们需要在标题前加上符号¥,并且用空格隔开该符号和标题,现在我们可以将要求添加到参数中:

<?php the_title('&yen; '); ?> 

页面显示效果如下:

¥ Using WordPress Makes Me Smile

接下来我们可以考虑在标题后面加上一些内容,例如一个可以激发人们阅读兴趣的符号»。

<?php the_title('&yen; ', ' &raquo;'); ?> 

注意,符号»和标题之间也应该用空格隔开以区别两者。

¥ Using WordPress Makes Me Smile »

我们还可以将标题设计成不同样式。下面是使用标题标签的另一个示例:

<h2><?php the_title('Post Title: '); ?></h2> 

日志标题显示为2号标题字体,标题前还出现了“Post Title”字样。显示结果:

Post Title: Using WordPress Makes Me Smile

注意:虽然the_title接收“before”和“after”参数,但不是所有模板标签都能够接收这两个参数。使用模板标签前请先查看WordPress手册中对该模板标签的介绍,介绍中会列出模板标签接收的参数。

布尔型模板标签

上面的模板标签示例使用的是相互用引号和逗号隔开的简单参数,接下来我们介绍布尔型模板标签。布尔型模板标签利用布尔数学体系,将多个参数相互连接。常见布尔表达式用“and(&)”连接各个参数。

在WordPress工具栏和菜单模板文件中经常可以看到模板标签wp_list_cats()。该模板标签列出网站的所有分类。

<?php wp_list_cats(); ?>

默认情况下,该模板标签的参数有:

  • all ——显示所有分类
  • sort_column ——按类别ID排列日志
  • sort_order ——按升序排列日志
  • list —— 将分类日志设置为无序排列(<ul><li>)
  • optioncount ——不在类别中显示日志总数
  • hide_empty ——根据最先的两个参数(optional与all),不显示没有日志的分类
  • use_desc_for_title ——将分类说明作为链接标题
  • children ——显示每个类别下的子类别

下面是一个分类目录示例:

  • Stories About My Life
  • Stories About My Family
  • Things I Want To Share
    • About WordPress
    • About Writing
    • About Story Telling
  • Facts and Fiction About Life

缩进显示的类别——"About WordPress", "About Writing"与"About Story Telling"是父类别"Things I Want To Share"下属子类别。默认情况下这些类别标题不是类别的实际名称,只是用户在管理面板> 文章> 分类目录选项下设置的类别描述。

如果希望显示分类的实际名称而不是类别描述,可以将模板标签改为:

<?php wp_list_cats('use_desc_for_title=0'); ?>

参数值设为0,即分类描述不再作为类别标题。这时分类目录显示为:

  • My Life Stories
  • My Family
  • Sharing
    • WordPress
    • Writing
    • Story Telling
  • Facts and Fiction

如果我们不希望“Sharing”的子类别出现在分类目录上,可以为wp_list_cats()添加一个参数,让该模板标签不显示子类别,接着再添加一个只显示类别标题而非类别描述的参数,两个参数间用表示and的符号“&”连接。

<?php wp_list_cats('use_desc_for_title=0&children=0'); ?>

注意&符号前后没有空格。除参数外围的引号外,参数之间也没有其它引号或空格。此时分类目录显示如下:

  • My Life Stories
  • My Family
  • Sharing
  • Facts and Fiction

下面是另一个示例。如果我们希望将类别链接作为类别标题,将所有链接按名称字母顺序排列,在每个分类中显示日志总数,并且只显示ID为3的类别("Sharing")下属子类别,这时我们需要使用的模板标签是:

<?php wp_list_cats('sort_column=name&sort_order=asc&optioncount=1&use_desc_for_title=0&
child_of=3'); ?>
    • Story Telling (21)
    • WordPress (23)
    • Writing (10)

模板标签与WordPress主循环

WordPress中很多模板标签都在WordPress主循环中运行。这意味着,这些模板标签作为php“循环”的一部分,被包含在模板文件中。模板标签根据主循环中的说明,生成访问者请求的页面。

WordPress主循环将以下代码作为开始部分:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

循环中的模板标签必须出现在代码中间部分,在循环结束部分前:

<?php endwhile; else: ?>  
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>  
<?php endif; ?>

需要出现在循环中的模板标签包括the_content()the_excerpt()next_post()以及 previous_post()。如果我们需要使用的模板标签没有必要出现在WordPress循环中,例如 wp_list_cats()wp_list_pages,我们额可以将这些模板标签放在任意位置上,例如侧边栏、页眉或是页脚的模板文件中。

相关资料

本文只是对WordPress模板标签的简单介绍,更多详细信息请参考以下资源:

设计模板标签

 

#1
指的学习的帖子
#2
请问博主能开发wordpress主题或者插件吗。。需要开发个小东西,
#3
伟大的职位!感谢分享!
#4
值得学习
#5
很赞
#6
good,学习啦
#7
看懂的不多啊。 收藏一下 好好学习咯。 嘿嘿