Wordpress的自定义域

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

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

PHP:
  1. <?php
  2. echo intval(post_custom('views'));
  3. ?>

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

PHP:
  1. function get_post_custom( $post_id = 0 ) {
  2.     global $id, $post_meta_cache, $wpdb;
  3.  
  4.     if ( ! $post_id )
  5.         $post_id = $id;
  6.  
  7.     if ( isset($post_meta_cache[$post_id]) )
  8.         return $post_meta_cache[$post_id];
  9.  
  10.     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) ) {
  11.         //读取数据库...........
  12.     }
  13. }

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

作者: volcano 发表于9月 26, 2006 at 7:42 am

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

Tags: ,

1 条评论 »

  1. xunii.com 开始的地方: Blog Archive : Wordpress的自定义域 于 2007-07-02 @ 20:43:47 留言

    […] 可以看到,wordpress也已经考虑到这个问题,如果已经读取过自定义域,会以缓存的形式$post_meta_cache直接返回,不再折腾可怜的数据库了. 转自:http://www.ooso.net/index.php/archives/251< […]

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

留条评论