WordPress的自定义域

wordpress安装了一些插件之后,在文章的编辑页经常能看到新增的”自定义域“,比如说前一阵装上的tag插件,或者在另外一个系统上安装的postviews插件.

以postviews为例,这个插件能统计每篇blog的人气,它会给每篇blog新增字段:views,为了显示人气,需要在模板中插入代码:

<?php
echo intval(post_custom('views'));
?>

这样有可能在一个loop里面多次调用post_custom函数,这时候对它的性能不免有些怀疑,担心post_custom函数会多次读取数据库,于是读了一下相关的代码:

function get_post_custom( $post_id = 0 ) {
	global $id, $post_meta_cache, $wpdb;

	if ( ! $post_id )
		$post_id = $id;

	if ( isset($post_meta_cache[$post_id]) )
		return $post_meta_cache[$post_id];

	if ( $meta_list = $wpdb->get_results("SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta	WHERE post_id = '$post_id' ORDER BY post_id, meta_key", ARRAY_A) ) {
		//读取数据库...........
	}
}

可以看到,wordpress也已经考虑到这个问题,如果已经读取过自定义域,会以缓存的形式$post_meta_cache直接返回,不再折腾可怜的数据库了.

作者: 发表于September 26, 2006 at 7:42 am

版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原始出处作者信息及此声明

Tags: ,

1 条评论 »

  1. 一心而已 于 2010-04-27 @ 20:24:57 留言

    wordpress的自定义域的确很强大

RSS 为此帖反馈评论 · 反向跟踪 网站

留条评论