WordPress 中模板标签与函数

评论(3)

在 WordPress 的主题和插件制作之初中有一个很混淆的概念,就是模板标签和函数,如 the_date 和 get_the_date , the_time 和 get_the_time ,the_content 和 get_the_content 这些到底有有什么区别,用法又有哪些不同呢?如果你懂了,请你跳过。如果你不懂,没关系,翔子也不是很懂,不如我们一起来学习一下。

模板标签与函数官方解释

WordPress 中的函数:

WordPress 中定义了许多有用的 PHP 函数。
这些函数中众所周知的 Template Tags, 是为 WordPress 主题特别准备的。
还有些函数与 动作(actions) 和过滤器 (filters)(见 Plugin API)有关,
这些函数也因此主要用在插件开发之中。
其他的函数则应用在 WordPress 核心功能上。

模板标签:

模板标签(Template tags)在博客的 模板 文件中使用,用来动态的显示内容或自定义网站。

我的理解

好吧,我承认官方解释比较正式化,不太适合像我这种小市井去看,所以我也就有一点我的理解。
首先 函数 很简单,就是 PHP 中对函数的理解,为了达到某些功能所写的函数。
然后 模板标签 也很简单,就是函数中那些为了用在模板、主题中更方便的使用,做了调整的函数,其实也还叫函数。
区别在于:函数是功能的最低级实现,模板是嵌套了更多功能的高级实现,函数更适合于爱折腾的人,模板标签使用起来则会更舒适一点。大部分模板标签是直接输出到页面的,而不是用 echo 或 print 等 PHP 命令来输出到页面的,相反的函数一般返回的是字符串,所以要用 echo 或 print 等 PHP 命令来输出到页面。

下面将会使用:get_the_date 和 the_date 来做比较,
代码源引 WordPress 3.3.1 核心代码 wp-includes/general-template.php
该函数和标签用于显示日志日期。

函数举例

function get_the_date( $d = '' ) {
	//该函数只接受一个参数,即日期显示的格式。
	global $post;
	//获取post变量
	$the_date = '';
	//清空内部变量,便于在循环中再次赋值。
	if ( '' == $d )
	//如果函数调用时未设置格式,则自动调用后台设置的日期格式
		$the_date .= mysql2date(get_option('date_format'), $post->post_date);
	else
	//如果设置了格式则显示函数调用时设置的格式。
	//也就是说,如果你用的主题在调用日期的时候设置过格式了,
	//不论你在后台怎么改,前台日期的格式也不会变了。
	//如果想改,你就得会该代码,怎么样,是不是很蛋疼?
	//不过这正是wp的魅力所在。
		$the_date .= mysql2date($d, $post->post_date);
	//这里返回的是一个字符串。
	//apply_filters 是 wordpress 的过滤器。
	//其实这里可以写成 return $the_date;新手比较容易理解。
	return apply_filters('get_the_date', $the_date, $d);
}

标签举例

function the_date( $d = '', $before = '', $after = '', $echo = true ) {
	//可以设置4个参数
	global $currentday, $previousday;
	$the_date = '';
	if ( $currentday != $previousday ) {
		$the_date .= $before;
		//get_the_date 是基础实现办法。
		$the_date .= get_the_date( $d );
		$the_date .= $after;
		$previousday = $currentday;
 
		$the_date = apply_filters('the_date', $the_date, $d, $before, $after);
 
		if ( $echo )
		//直接 echo 打印输出。
			echo $the_date;
		else
		//预留了返回字符串形式
			return $the_date;
	}
 
	return null;
}

用法

//get_the_date 用法
printf('文章发表于%1$s',get_the_date());
//同效于
echo '文章发表于'.get_the_date();
 
//the_date 用法
文章发表于<?php the_date(); ?>

总结

近期博文较少,主要因为年末较忙,晚上回家比较累,所以一般只打开电脑研究一下成品主题,看看别的主题和插件作者是用怎么个思路写主题的,其实 WordPress 中的主题和插件制作属于比较末端的东西了,现成的函数、钩子写起来也都大同小异,不同的在于主题是否要用到一些最热门的东西,比如 HTML5 AJAX 社会化插件 评论整合 等等等等,所以近期也没有太多的感悟。这篇文章也是憋了好久,其实道理很肤浅,但新手总是容易把the和get_the搞混(我初期的时候就是这样),所以就写一下,算是共勉吧。





转载请注明转自: WordPress 中模板标签与函数

  1. 不错~

  2. @wind
    Wind 兄过年不休息阿?

  3. 沙发下,在家看xiang兄写的博文