<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://drin.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fdrin.spaces.live.com%2fcategory%2fWordpress%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>d r i n @ m e l: Wordpress</title><description /><link>http://drin.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catWordpress</link><language>en-US</language><pubDate>Mon, 25 Aug 2008 09:37:12 GMT</pubDate><lastBuildDate>Mon, 25 Aug 2008 09:37:12 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://drin.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>-9100137331186195870</live:id><live:alias>drin</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>无题之二</title><link>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!2183.entry</link><description>&lt;div&gt;Original URL:&lt;a href="http://www.drin.cn/untitled-no-2/" title="无题之二"&gt; http://www.drin.cn/untitled-no-2/ &lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt; &lt;div&gt;&lt;strong&gt;Current Interests:&lt;/strong&gt;&lt;/div&gt;&lt;br&gt;
&lt;p style="padding-left:30px"&gt;a.  Develop a ‘feed reader’ website aggregating the posts from chinese wordpress users/blogs, which would apply the similar concept/technic of archieye.com.&lt;br&gt;
&lt;p style="padding-left:30px"&gt;b.  Develop a Xiaonei application named ’same birthday’.&lt;br&gt;
&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-9100137331186195870&amp;page=RSS%3a+%e6%97%a0%e9%a2%98%e4%b9%8b%e4%ba%8c&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=drin.spaces.live.com&amp;amp;GT1=drin"&gt;</description><comments>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!2183.entry#comment</comments><guid isPermaLink="true">http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!2183.entry</guid><pubDate>Fri, 15 Aug 2008 01:17:34 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://drin.spaces.live.com/blog/cns!81B5D14FD7602262!2183/comments/feed.rss</wfw:commentRss><wfw:comment>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!2183.entry#comment</wfw:comment><dcterms:modified>2008-08-18T13:56:58Z</dcterms:modified></item><item><title>New caching system</title><link>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!2040.entry</link><description>&lt;div&gt;Original URL:&lt;a href="http://www.drin.cn/new-caching-system-with-wp-super-cache-and-eaccelerator/" title="New caching system"&gt; http://www.drin.cn/new-caching-system-with-wp-super-cache-and-eaccelerator/ &lt;/a&gt;&lt;/div&gt; &lt;div&gt;Have you ever noticed that Drin.cn now runs faster than before? Sure you have I bet. Please have a look at the brand new caching system assembled for the site. It includes these components:&lt;/div&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.ocaoimh.ie/wp-super-cache/" target="_blank"&gt;WP Super Cache&lt;/a&gt;
&lt;li&gt;&lt;a href="http://www.eaccelerator.net/" target="_blank"&gt;eAccelerator&lt;/a&gt;
&lt;li&gt;&lt;a href="http://www.neosmart.net/dl.php?id=13" target="_blank"&gt;eAccelerator for Wordpress plugin&lt;/a&gt; (object cache)
&lt;/ul&gt;
&lt;div&gt;Fast isn’t it? That’s so cool, hehe. Btw, this site is proudly hosted by &lt;a href="http://www.dreamhostps.com" target="_blank"&gt;Dreamhost Private Server&lt;/a&gt; and Private Mysql Server.&lt;/div&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-9100137331186195870&amp;page=RSS%3a+New+caching+system&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=drin.spaces.live.com&amp;amp;GT1=drin"&gt;</description><comments>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!2040.entry#comment</comments><guid isPermaLink="true">http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!2040.entry</guid><pubDate>Thu, 20 Mar 2008 03:57:02 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://drin.spaces.live.com/blog/cns!81B5D14FD7602262!2040/comments/feed.rss</wfw:commentRss><wfw:comment>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!2040.entry#comment</wfw:comment><dcterms:modified>2008-03-20T04:00:18Z</dcterms:modified></item><item><title>WP升级</title><link>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1669.entry</link><description>&lt;div&gt;Original URL:&lt;a href="http://www.drin.cn/wordpress-upgraded-to-23-alpha/" title="WP升级"&gt; http://www.drin.cn/wordpress-upgraded-to-23-alpha/ &lt;/a&gt;&lt;/div&gt; &lt;div&gt;WP 发布了新的2.2版本。本站一向“敢为风气先”，因此大着胆子更新到了Wordpress 2.3 Alpha。更新过程一路顺利，只花了五分钟，哈哈哈。我喜欢这种在Alpha版本阶段就能顺利无错更新的程序。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;新的2.2+版本的WP内置了Widgets/Dynamic Sidebar的支持。我于是乎兴冲冲跑到这个菜单下面看了一眼，结果发现我的Tiny Theme不支持Widgets。原因很简单，因为它是个极少主义风格的一栏主题，哪会有 Sidebar 存在呀… Sigh。（只闻听Tiny Theme说: 我不是个完整的男人，哭~）。顺带，推荐一下同样坚持使用Tiny Theme的Leo君 - &lt;a href="http://www.leosh.cn" target="_blank"&gt;Leosh.cn&lt;/a&gt;。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;P.S. 一个小实验，中文Wordpress博客RSS合烧(By 新版Google Reader)&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;br&gt;
&lt;div&gt;附上这个&lt;a href="http://www.drin.cn/wp-content/uploads/2007/05/google-reader-subscriptionsxml..xml" title="Chinese Wordpress Blogs OPML"&gt;OPML&lt;/a&gt;文件以供下载。其中包含我搜集的共22个中文Wordpress博客的链接信息。&lt;/div&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-9100137331186195870&amp;page=RSS%3a+WP%e5%8d%87%e7%ba%a7&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=drin.spaces.live.com&amp;amp;GT1=drin"&gt;</description><comments>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1669.entry#comment</comments><guid isPermaLink="true">http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1669.entry</guid><pubDate>Fri, 18 May 2007 02:30:22 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://drin.spaces.live.com/blog/cns!81B5D14FD7602262!1669/comments/feed.rss</wfw:commentRss><wfw:comment>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1669.entry#comment</wfw:comment><dcterms:modified>2007-07-08T16:02:32Z</dcterms:modified></item><item><title>和WP插件搏斗（二）</title><link>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1660.entry</link><description>&lt;div&gt;Original URL:&lt;a href="http://www.drin.cn/fight-with-wordpress-plugins-issue-two/" title="和WP插件搏斗（二）"&gt; http://www.drin.cn/fight-with-wordpress-plugins-issue-two/ &lt;/a&gt;&lt;/div&gt;&lt;br&gt; &lt;div&gt;我给自己总结了三条简单规律：&lt;/div&gt;&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;看到越来越多的WP插件，手越来越痒。每个都想装一下。
&lt;li&gt;插件装得越多，出问题的几率越大。
&lt;li&gt;寻找和解决问题的过程富有挑战性，一来二去就上瘾了。
&lt;/ol&gt;
&lt;div&gt;这次我遇到的是一个常见问题 ——  WP系统的速度变慢了。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;我尝试着按照各种提速建议作了调整，可是速度没有大的改观，也只好将就。有一天，我突然发现自己在&lt;a href="http://www.wordpress.com" target="_blank"&gt;Wordpress.com&lt;/a&gt; 的博客跑得飞快。两相比较之下，我就再也受不了自己这个博客的蜗牛速度了。我的网站在&lt;a href="http://www.dreamhost.com" target="_blank"&gt;Dreamhost&lt;/a&gt; 的空间上，shared hosting的性能与带宽自然无法和专用主机相比。不过，我还是觉得，速度慢到这种地步，应该有很大的改进空间。如果在页脚模板加上这句：&lt;/div&gt;&lt;br&gt;

&lt;div&gt;&lt;span&gt;&lt;a&gt;[copy]&lt;/a&gt;&lt;a&gt;[&lt;span&gt;-&lt;/span&gt;]&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a&gt;View Code&lt;/a&gt; PHP&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;?php&lt;/span&gt; timer_stop&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#cc66cc"&gt;1&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;&lt;span style="color:#66cc66"&gt;;&lt;/span&gt; &lt;span style="color:#000000;font-weight:bold"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div&gt;那么显示页面生成时间在3~6秒之间。就算打开了wp-cache，速度还是慢得令人抓狂。于是我开始了寻找速度提升之路的过程。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;首先我很明确的是，目前的&lt;a href="http://www.drin.cn/about/wordpress-plugins-in-use/" target="_blank"&gt;这一堆插件&lt;/a&gt;，我是一个都不愿意去掉的。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;我花了很多功夫东敲西打。甚至连php.ini都又翻出来收拾了几遍（我用自己装的PHP 4.4.2）。后来，在打开phpMyadmin看数据表的时候，发现了一点端倪。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;我发现wp_options这张表异常的大。我这里有两张数据表是上MB等级的，一个是wp_falbum_cache。这个好理解。因为里面存储的是FAlbum插件缓存下来的Flickr图片，而且只在专门的相簿页面才加载，不会拖累整体系统性能的。另外一个就是wp_options，也有四、五兆之大。这就相当诡异了。因为wp_posts不过才几百KB，每天都收不少垃圾留言的wp_comments也还没到1MB呢。而且，打开每个前台页面都会查询wp_options表。如果我们研究一下wp-includes/functions.php，可以发现其中的get_option()函数是这样运作的：&lt;/div&gt;&lt;br&gt;

&lt;div&gt;&lt;span&gt;&lt;a&gt;[copy]&lt;/a&gt;&lt;a&gt;[&lt;span&gt;-&lt;/span&gt;]&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a&gt;View Code&lt;/a&gt; PHP&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;span style="color:#ff0000"&gt;$alloptions&lt;/span&gt; &lt;span style="color:#66cc66"&gt;=&lt;/span&gt; wp_load_alloptions&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;&lt;span style="color:#66cc66"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div&gt;它调用了另一个叫做wp_load_alloptions()的函数，把wp_options表里的所有记录全部取出放在一个数组变量里面。而这个wp_load_alloptions()函数中的的关键内容就是：&lt;/div&gt;&lt;br&gt;

&lt;div&gt;&lt;span&gt;&lt;a&gt;[copy]&lt;/a&gt;&lt;a&gt;[&lt;span&gt;-&lt;/span&gt;]&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a&gt;View Code&lt;/a&gt; MYSQL&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;span style="color:#993333;font-weight:bold"&gt;SELECT&lt;/span&gt; option_name, option_value &lt;span style="color:#993333;font-weight:bold"&gt;FROM&lt;/span&gt; $wpdb&lt;span style="color:#66cc66"&gt;-&amp;gt;&lt;/span&gt;options &lt;span style="color:#993333;font-weight:bold"&gt;WHERE&lt;/span&gt; autoload &lt;span style="color:#66cc66"&gt;=&lt;/span&gt; &lt;span style="color:#ff0000"&gt;'yes'&lt;/span&gt;&lt;/pre&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div&gt;然后再根据调用get_option()时候的参数来取得具体某个option_name的option_value。当然，对于$alloptions这个变量WP有相应的缓存机制，所以每个页面打开的时候，这个变量只要查询一次，就可以用来获取所有option_name的值。但是，这个表有几兆之大呀，这究竟会不会影响速度呢？&lt;/div&gt;&lt;br&gt;
&lt;div&gt;于是我在页脚模板里面加上这句：&lt;/div&gt;&lt;br&gt;

&lt;div&gt;&lt;span&gt;&lt;a&gt;[copy]&lt;/a&gt;&lt;a&gt;[&lt;span&gt;-&lt;/span&gt;]&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a&gt;View Code&lt;/a&gt; PHP&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;span style="color:#000000;font-weight:bold"&gt;&amp;lt;?php&lt;/span&gt;  &lt;span style="color:#000066"&gt;print_r&lt;/span&gt;&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000"&gt;$wpdb&lt;/span&gt;&lt;span style="color:#66cc66"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#006600"&gt;queries&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;&lt;span style="color:#66cc66"&gt;;&lt;/span&gt; &lt;span style="color:#000000;font-weight:bold"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div&gt;这样就可以详细察看所有SQL查询的耗时信息了。一看之下，大惊失色。就是之前列出的这句SQL花费了0.x秒甚至1.x秒的时间。作为参照来看，其他所有的SQL查询都是0.0x秒。差了一个数量级。所以，在每个页面都要反复查询这些尺寸很大的数据，很不经济呀。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;既然问题明确了，我就开始一条一条地翻看wp_options里面究竟有些什么，竟然把数据表撑到几兆之大！&lt;/div&gt;&lt;br&gt;
&lt;div&gt;我总结了一下，大概有以下三种信息：&lt;/div&gt;&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;WP自己的设置信息
&lt;li&gt;插件的设置信息
&lt;li&gt;一些以rss_开头的纪录
&lt;/ol&gt;
&lt;div&gt;主要问题集中在第二、第三这两项上。如果你想我一样每天不装上一两个插件就浑身不自在，而且频繁安装卸载插件的话，第二项就是一个大问题。因为卸载插件以后，在数据表里的设置信息仍然保留着！有的插件（比如WP-ECommerce），一下子就在wp_options表里面扔了几十条纪录。如果这样的插件来上四五个，林林总总的残留纪录就是个可观的数目了。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;对于这个问题没有好的解决办法，只能一条一条删除了。不过，好在就算误删除问题也不大，把相关的插件重新禁用再激活一下应该就可以了。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;第三项其实才是本文的重点内容。在我删除了这些rss_纪录之后，wp_options的大小只有60多KB！它们究竟是什么呢？其实就是缓存下来的RSS内容。大致包括了两类：&lt;/div&gt;&lt;br&gt;
&lt;div&gt;第一类，就是WP后台里控制面板首页的那些RSS。具体来说有三个，在wp-admin/index-extra.php里面一目了然，分别是&lt;/div&gt;&lt;br&gt;
&lt;div&gt;1. Incoming Links:&lt;/div&gt;&lt;br&gt;

&lt;div&gt;&lt;span&gt;&lt;a&gt;[copy]&lt;/a&gt;&lt;a&gt;[&lt;span&gt;-&lt;/span&gt;]&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a&gt;View Code&lt;/a&gt; PHP&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;span style="color:#ff0000"&gt;$rss&lt;/span&gt; &lt;span style="color:#66cc66"&gt;=&lt;/span&gt; &lt;span style="color:#66cc66"&gt;@&lt;/span&gt;fetch_rss&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000"&gt;'http://feeds.technorati.com/cosmos/rss/?url='&lt;/span&gt;&lt;span style="color:#66cc66"&gt;.&lt;/span&gt; trailingslashit&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;get_option&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000"&gt;'home'&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt; &lt;span style="color:#66cc66"&gt;.&lt;/span&gt;&lt;span style="color:#ff0000"&gt;'&amp;amp;amp;partner=wordpress'&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;&lt;span style="color:#66cc66"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div&gt;2. Dev News&lt;/div&gt;&lt;br&gt;

&lt;div&gt;&lt;span&gt;&lt;a&gt;[copy]&lt;/a&gt;&lt;a&gt;[&lt;span&gt;-&lt;/span&gt;]&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a&gt;View Code&lt;/a&gt; PHP&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;span style="color:#ff0000"&gt;$rss&lt;/span&gt; &lt;span style="color:#66cc66"&gt;=&lt;/span&gt; &lt;span style="color:#66cc66"&gt;@&lt;/span&gt;fetch_rss&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000"&gt;'http://wordpress.org/development/feed/'&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;&lt;span style="color:#66cc66"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div&gt;3. Planet News:&lt;/div&gt;&lt;br&gt;

&lt;div&gt;&lt;span&gt;&lt;a&gt;[copy]&lt;/a&gt;&lt;a&gt;[&lt;span&gt;-&lt;/span&gt;]&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a&gt;View Code&lt;/a&gt; PHP&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;span style="color:#ff0000"&gt;$rss&lt;/span&gt; &lt;span style="color:#66cc66"&gt;=&lt;/span&gt; &lt;span style="color:#66cc66"&gt;@&lt;/span&gt;fetch_rss&lt;span style="color:#66cc66"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000"&gt;'http://planet.wordpress.org/feed/'&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;&lt;span style="color:#66cc66"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div&gt;第二类，就是你的Blogroll/链接栏目里面网站的RSS（前提是你在添加链接的时候填写了相应的RSS地址）。为什么呢？因为如果打开菜单 &amp;gt; 选项 &amp;gt; 杂项页面，就会发现WP有个功能是跟踪书签更新时间。在有些模板里，凡是最近有更新的网站，这个书签是用斜体或者其他颜色凸出显示的。这个功能需要抓取RSS来判断更新时间。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;所以，这些rss_纪录对于普通的前台页面来说，根本就是冗余无用的。不过，只是删除它们是没用的，因为WP定时更新这些数据的。如果只在数据库里面删除它们，那么过不了多久就又回来了。真是讨厌啊… 而且，毕竟这些数据还是有用的（比如在后台的控制面板页面）。因此，如果你像我一样决定要对付这些记录的话，恐怕就非得修改代码不可了（也就是Hacking了，所谓get your hands dirty罗，呵呵）。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;我的解决方案是个笨办法，就是另外建立一张叫做wp_rss_data的数据表，把那些rss_开头的数据记录统统存放在这里。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;表的结构可以通过在phpMyadmin里面复制wp_options得来，一模一样的就可以了。然后呢，修改wp-settings.php。在这句的后面&lt;/div&gt;&lt;br&gt;

&lt;div&gt;&lt;span&gt;&lt;a&gt;[copy]&lt;/a&gt;&lt;a&gt;[&lt;span&gt;-&lt;/span&gt;]&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a&gt;View Code&lt;/a&gt; PHP&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;span style="color:#ff0000"&gt;$wpdb&lt;/span&gt;&lt;span style="color:#66cc66"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#006600"&gt;usermeta&lt;/span&gt; &lt;span style="color:#66cc66"&gt;=&lt;/span&gt; &lt;span style="color:#ff0000"&gt;$wpdb&lt;/span&gt;&lt;span style="color:#66cc66"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#006600"&gt;prefix&lt;/span&gt; &lt;span style="color:#66cc66"&gt;.&lt;/span&gt; &lt;span style="color:#ff0000"&gt;'usermeta'&lt;/span&gt;&lt;span style="color:#66cc66"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div&gt;加上：&lt;/div&gt;&lt;br&gt;

&lt;div&gt;&lt;span&gt;&lt;a&gt;[copy]&lt;/a&gt;&lt;a&gt;[&lt;span&gt;-&lt;/span&gt;]&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a&gt;View Code&lt;/a&gt; PHP&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;span style="color:#ff0000"&gt;$wpdb&lt;/span&gt;&lt;span style="color:#66cc66"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#006600"&gt;rss_data&lt;/span&gt; &lt;span style="color:#66cc66"&gt;=&lt;/span&gt; &lt;span style="color:#ff0000"&gt;$wpdb&lt;/span&gt;&lt;span style="color:#66cc66"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#006600"&gt;prefix&lt;/span&gt; &lt;span style="color:#66cc66"&gt;.&lt;/span&gt; &lt;span style="color:#ff0000"&gt;'rss_data'&lt;/span&gt;&lt;span style="color:#66cc66"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div&gt;在这句的后面&lt;/div&gt;&lt;br&gt;

&lt;div&gt;&lt;span&gt;&lt;a&gt;[copy]&lt;/a&gt;&lt;a&gt;[&lt;span&gt;-&lt;/span&gt;]&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a&gt;View Code&lt;/a&gt; PHP&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;span style="color:#b1b100"&gt;require&lt;/span&gt; &lt;span style="color:#66cc66"&gt;(&lt;/span&gt;ABSPATH &lt;span style="color:#66cc66"&gt;.&lt;/span&gt; WPINC &lt;span style="color:#66cc66"&gt;.&lt;/span&gt; &lt;span style="color:#ff0000"&gt;'/functions.php'&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;&lt;span style="color:#66cc66"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div&gt;加上：&lt;/div&gt;&lt;br&gt;

&lt;div&gt;&lt;span&gt;&lt;a&gt;[copy]&lt;/a&gt;&lt;a&gt;[&lt;span&gt;-&lt;/span&gt;]&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;a&gt;View Code&lt;/a&gt; PHP&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;span style="color:#b1b100"&gt;require&lt;/span&gt; &lt;span style="color:#66cc66"&gt;(&lt;/span&gt;ABSPATH &lt;span style="color:#66cc66"&gt;.&lt;/span&gt; WPINC &lt;span style="color:#66cc66"&gt;.&lt;/span&gt; &lt;span style="color:#ff0000"&gt;'/functions-rss.php'&lt;/span&gt;&lt;span style="color:#66cc66"&gt;)&lt;/span&gt;&lt;span style="color:#66cc66"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div&gt;新加入一个文件叫做functions-rss.php，下载&lt;a href="http://www.drin.cn/wp-content/uploads/php-scripts/functions-rss.phps" target="_blank"&gt;点此&lt;/a&gt;，要放在wp-includes目录下面。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;最后，修改wp-includes/rss.php，把其中的以下变量进行替换：&lt;/div&gt;&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;$wpdb-&amp;gt;options 替换为 $wpdb-&amp;gt;rss_data
&lt;li&gt;add_option 替换为 add_rss_data
&lt;li&gt;update_option 替换为 update_rss_data
&lt;li&gt;get_option 替换为 get_rss_data
&lt;/ol&gt;
&lt;div&gt;完成了。这是一个涉及代码修改的办法，所以请做好备份。我不保证没有问题哦。总的概念就是，把rss.php中涉及wp_options表的操作都转移到刚才建立的wp_rss_data表。而相关的函数都在添加的functions-rss.php中提供了（其实是一模一样从xxx_options拷贝过来的）。我也想过在add_option，update_option，get_optoin函数中加入判断，来分别是一般的option_name还是rss_那样的，然后操作不同的数据表。不过后来觉得这样修改不利于升级，所以还是用了现在的办法。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;现在我的wp_options表一般在60-100多KB之间，wp_rss_data表一般在4~5MB左右。WP系统的整体速度令我满意（因为就算打开了wp-cache插件来缓存页面，这个wp_options表还是每次都要查询的）。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;最后指出一点，使用很广泛的&lt;a href="http://www.arnebrachhold.de/redir/sitemap-home/" target="_blank"&gt;Sitemap&lt;/a&gt; 插件会在wp_options表中存储生成sitemap的过程信息。这条纪录也略有点大，如果你是个完美主义者，那就记得点一下Clear Log按钮来清除。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;就写到这里吧，下次再见吧~&lt;/div&gt;&lt;br&gt;
&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-9100137331186195870&amp;page=RSS%3a+%e5%92%8cWP%e6%8f%92%e4%bb%b6%e6%90%8f%e6%96%97%ef%bc%88%e4%ba%8c%ef%bc%89&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=drin.spaces.live.com&amp;amp;GT1=drin"&gt;</description><comments>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1660.entry#comment</comments><guid isPermaLink="true">http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1660.entry</guid><pubDate>Mon, 12 Mar 2007 11:31:05 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://drin.spaces.live.com/blog/cns!81B5D14FD7602262!1660/comments/feed.rss</wfw:commentRss><wfw:comment>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1660.entry#comment</wfw:comment><dcterms:modified>2008-06-22T16:21:59Z</dcterms:modified></item><item><title>和WP插件搏斗</title><link>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1650.entry</link><description>&lt;div&gt;Original URL:&lt;a href="http://www.drin.cn/debug-wordpress-plugins/" title="和WP插件搏斗"&gt; http://www.drin.cn/debug-wordpress-plugins/ &lt;/a&gt;&lt;/div&gt; &lt;div&gt;网站托管在&lt;a href="http://www.dreamhost.com" target="_blank"&gt;Dreamhost&lt;/a&gt; ，总体来说，还是很喜欢、很满意的。这次升级Wordpress到&lt;a href="http://wordpress.org/development/2007/01/ella-21/" target="_blank"&gt;2.1Ella&lt;/a&gt; 之后，不晓得为什么，可视化编辑器总是无法载入。一气之下，通过Dreamhost提供的shell功能，以svn方式更新到了最新的开发版本。所以，如果打开&lt;a href="http://www.drin.cn/about/wordpress-plugins-in-use" target="_blank"&gt;这个&lt;/a&gt; 介绍&lt;a target="_blank"&gt;本站使用插件&lt;/a&gt;的页面，拖到页面最下方，就可看到我用的Wordpress版本是，2.2 Bleeding。Bleeding的意思，就是出血呀（进行时），就想象成全身飙血的样子就好了（笑~），倒是很形象底形容了开发版本千疮百孔的状况。不过话说回来，Wordpress一路走到现在，开发版本也稳定好用底很。就算个别小臭虫，自己也能解决的。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;下面，就简单列下我最近作的一些修补：&lt;/div&gt;&lt;br&gt;
&lt;div&gt;首先就是那个可视化编辑器无法载入的情况。我碰到的问题，是所谓的“找不到元件（object）”。解释出来的意思就是，相关.js都没载入；因此这个TinyMCE编辑器，根本就是影踪全无。按照以往经验，我先把所有插件停用，然后用排除法一个一个试验。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;说到停用所有插件，有一个简便的办法，就是把原来的/wp-content/plugins目录改名为/wp-content/plugins~，然后新建一个空plugins目录。这样子，一下子所有插件都停掉了。如果要重新激活一个插件，只需要把那个文件从plugins~目录移动到plugins目录就行了。当然，你有可能需要在后台的插件列表里面重新激活一下。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;回过头来继续说这个TinyMCE编辑器的事。我花了点功夫把所有插件给试验了一遍，结果发现根本不是因为插件不兼容而引起的问题。真正的问题，出在tiny_mce_gzip.php这个文件上。它的作用，是把tiny_mce的javascript脚本通过gzip协议传输，降低传输时间，加快载入速度。我碰到无法载入的原因在于，php.ini中有错误的设定。因为我在自己的Dreamhost上面安装、编译了自己的PHP（v4.4.2, &lt;a href="http://www.drin.cn/test.php" target="_blank"&gt;phpinfo()&lt;/a&gt; ），所以之前无意中鬼使神差地修改了php.ini里面有关output_handler 的部分。结果呢，php默认就是通过gzip输出内容，虽然我把Wordpress后台里面“阅读”菜单中的gzip选项关闭了，但是TinyMCE仍然坚持着使用gzip输出，于是，自然载入失败了。值得一提的是，在调试过程中，我还试着下载了最新版的&lt;a href="http://tinymce.moxiecode.com/" target="_blank"&gt;TinyMCE 2.0.9&lt;/a&gt; 混进了Wordpress，期望能解决问题。结果发现，还是不行。网上有人指出说，让Wordpress避免载入这个tiny_mce_gzip.php，而是直接载入TinyMCE提供的一个静态.js文件可以解决问题。我也试验了，似乎只是部分解决了问题。因为Wordpress中的TinyMCE是经过特别调整的专用版本（也有人戏称是阉割版本），所以有的按钮会发生无法使用的问题。好在，最终我找到了主要问题所在，算是不用伤筋动骨就恢复正常了。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;还有一个有趣的部分是，网上有文章提到说如何打开Wordpress内置的TinyMCE中隐藏的按钮。具体可以去Google搜索，修改很简单，修改以后可以打开一个叫做Show/Hide Advanced Toolbar 的按钮，点击一下就可以显示/隐藏额外的一行编辑器按钮，包括字体、大小、样式之类。要知道，完整版本的TinyMCE可是有着整整三行的按钮呢，呵呵。有兴趣不妨试试看。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;第二个问题，是有关AJAX和Comment的。现在的网站，特别是博客，都注重AJAX化（AJAXify）整个系统。和用户体验特别有关的就是评论（或者翻译成留言、回复）部分。之前我一直使用&lt;a href="http://kashou.net/blog/inline-ajax-comments/" target="_blank"&gt;Inline AJAX Comment&lt;/a&gt; 这款插件。但最近发现，总是有些不明原因的错误出现，更主要的问题是，这不利于提升站点的粘性，因为大家在首页就看到了所有评论，看完就走了。相比较之下，到单篇文章页面阅读评论，虽然增加了一次点击，但是提供了更多的吸引访客的机会（比如在单篇文章的页面加入最新发表和相关文章两个列表等等）。同时，点击进入以后，撰写留言的表单也出现了，对增加访客留言率或许会有帮助。权衡再三，我还是去掉了这个插件。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;取而代之的，并非那个很有名的台湾编程美女“&lt;a href="http://blog.nahoya.com/" target="_blank"&gt;懒懒喵&lt;/a&gt;”的作品&lt;a href="http://blog.nahoya.com/archives/2006_04/109" target="_blank"&gt;AJAX Comments Reply&lt;/a&gt; ，而是&lt;a href="http://www.mikesmullin.com/2006/06/05/ajax-comments-20/" target="_blank"&gt;AJAX Comment&lt;/a&gt; 。原因很简单，前者属于Wordpress Hack，修改了源代码，过程比较麻烦是小事，不利于系统的升级和完整性才是真正让我有所顾虑的。AJAX Comment我觉得比较优秀，并且支持一款叫做AuthImage的插件，能够提供从Captcha图片验证、无刷新评论提交、错误信息反馈、新留言即时显示的统一解决方案。具体来讲，安装过程也不顺利。使用中总是出现javascript错误（看来这是AJAX特性的一个致命缺陷，因为javascript的错误调试实在不便），我找来找去找不到原因。后来终于发现，我使用的这款Theme叫做&lt;a href="http://wp.berkano.net/" target="_blank"&gt;Tiny&lt;/a&gt;（另有个修改版本叫作&lt;a href="http://themes.wordpress.net/columns/1-column/914/tiny-mod-10/" target="_blank"&gt;TinyMod&lt;/a&gt;），也作了一些修改，但是一直没发现，作者把评论表单的提交按钮的名字命名成了submitComment，这不是一个规范的名称。对于AJAX Comment插件来说，提交按钮的名字必须是submit才能正常运作。做了修改以后，就一切正常了。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;此外，我特别要提一下&lt;a href="http://www.gudlyf.com/index.php?p=376" target="_blank"&gt;AuthImage&lt;/a&gt; 这款插件的插件。它提供的设置选项丰富，调试起来相当有趣。具体显示可以看本页面最下方的Demo。它的优点在于，可以动态刷新验证图片；缺点在于，默认设置下的验证图片是在很丑，甚至很难辨认（真人很难辨认… orz）。我选择的是背景图片模式，去掉了大部分花里胡哨的背景图片，只留下来了两张，而且用Photoshop去掉了颜色变成灰度，并且调整了亮度对比度。虽然，相对来说防机器识别能力下降了，但可读性好多了。想来我这样的小站犯不着有人用&lt;a href="http://sam.zoy.org/pwntcha/" target="_blank"&gt;机器识别&lt;/a&gt; 来对付我吧？我还调整了字体变形的算法。因为单靠设置还不能达到要求，所以对于源代码略为有些小的改动。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;第三个修补，是使用广泛的&lt;a href="http://frenchfragfactory.net/ozh/my-projects/wordpress-admin-menu-drop-down-css/" target="_blank"&gt;Admin Drop Down Menu&lt;/a&gt; 插件。一切都好，就是不晓得为什么，不论我使用谁出品的中文包（就是zh-CN.mo文件），后台的撰写和管理的中文翻译就是不出现。一直是Write和Manage。这不是什么影响使用的问题，但是不彻底的菜单中文化总让人觉得看着别扭。忍了很久以后终于发现了原因。在插件的adminmenus.php 文件中的aws_correct_core_menus() 函数里，作者加了一些关于后台界面措辞的修订。&lt;/div&gt;&lt;br&gt;
&lt;blockquote&gt;&lt;div&gt; // make some corrections&lt;br&gt;
 $menu[5][0] = “Write”;&lt;br&gt;
 $menu[5][1] = “edit_posts”;&lt;br&gt;
 $menu[5][2] = “post-new.php”;&lt;br&gt;
 $menu[10][0] = “Manage”;&lt;br&gt;
 $menu[10][1] = “edit_posts”;&lt;br&gt;
 $menu[10][2] = “edit.php”; &lt;/div&gt;&lt;br&gt;&lt;/blockquote&gt;
&lt;div&gt; 因此，中文语言文件找不到可以匹配的英文单词进行翻译，后台菜单就显示出来Write和Manage了。修改很简单，只要把这两行给注释掉就可以了。看一下你的后台，是不是有“撰写”和“管理”的字样出现了？&lt;/div&gt;&lt;br&gt;
&lt;div&gt;最后说一个插件问题，是有关&lt;a href="http://www.arnebrachhold.de/2005/06/05/google-sitemaps-generator-v2-final" target="_blank"&gt;Google Sitemap&lt;/a&gt; 插件的。我很喜欢这个自动生成.xml格式站点地图文件的插件，效果可参见本页面最下方的xml sitemap 图片。只是有个问题，它有时候会无法显示图片。因为这个图片是通过插件动态生成的（作者把Gif图片用二进制格式包括在插件的.php文件里了），所以只需要直接把这个图片的地址拿来单独放在浏览器里面一看，就看到出错信息了。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;原来，在发送图片的Header之前，已经有插件提前给浏览器送出了Header，就是这个叫作&lt;a href="http://blog.nahoya.com/archives/2005_10/50" target="_blank"&gt;Display WP FeedReader&lt;/a&gt; 的插件（WordPress美女懒懒喵的又一个插件作品~）。归根结底，问题出在我为了中文化这个插件，把插件里面的几个英文翻译成了中文；为了避免乱码，整个文件使用了UTF8的格式来存储。而UTF8格式的插件.php文件在被系统加载的时候，似乎就已经送出了Header了。解决办法也简单，把中文改回英文，然后把文件存为普通的非UTF8的格式就好了。或许这个不是最好的解决办法。不过先凑活着用吧，等我有了更好的解决办法再说。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;呼，说了这么多。目前我的Wordpress运作健康。可我总有不停尝试安装新插件的坏习惯。不过，在不停的Debug修补过程中，对于Wordpress的理解也加深了。或许有空的时候会写一个自己的插件吧？呵呵，倒是有一些想法了。&lt;/div&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-9100137331186195870&amp;page=RSS%3a+%e5%92%8cWP%e6%8f%92%e4%bb%b6%e6%90%8f%e6%96%97&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=drin.spaces.live.com&amp;amp;GT1=drin"&gt;</description><comments>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1650.entry#comment</comments><guid isPermaLink="true">http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1650.entry</guid><pubDate>Mon, 05 Feb 2007 10:32:55 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://drin.spaces.live.com/blog/cns!81B5D14FD7602262!1650/comments/feed.rss</wfw:commentRss><wfw:comment>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1650.entry#comment</wfw:comment><dcterms:modified>2007-07-08T16:02:26Z</dcterms:modified></item><item><title>本站Wordpress升至v2.1</title><link>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1646.entry</link><description>&lt;div&gt;Original URL:&lt;a href="http://www.drin.cn/site-upgraded-to-wordpress-21/" title="本站Wordpress升至v2.1"&gt; http://www.drin.cn/site-upgraded-to-wordpress-21/ &lt;/a&gt;&lt;/div&gt; &lt;div&gt;如题。2.1算是&lt;a href="http://www.wordpress.org" target="_blank" title=Wordpress.org&gt;Wordpress&lt;/a&gt; 的一个主要版本升级，我就抽空跟着把本站的博客系统更新啦。新东西用起来的确舒服，虽然陆续出了各样的小问题… 主要是模版和部分插件不兼容新版本引起的。比如说，新版本的友情链接的分类不再单独出现，而是整合进了文章的分类表里。所以$wpdb-&amp;gt;linkcategories这个咚咚就要报错地。改成$wpdb-&amp;gt;categories就好了。另外无意中发现&lt;a href="http://codex.wordpress.org/" target="_blank"&gt;codex.wordpress.org&lt;/a&gt; 不支持wp_get_links的文档了，因为根本就不存在这个页面了？真的假的？我还要确认一下。看来有些被放弃的tag真的被毫不留情地丢掉了。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;顺带想到，其实提高PHP编程水平有两大途径，一个是“和谐社会”（就是多装开源程序除错，让程序运行“和谐”起来），另一个就是“与时俱进”（就是多多更新程序到最新开发版本，例如nightbuild、snapshot这类的）。这两个提高编程水平的办法都是很累人的，因为开源程序带着错误发布是太常有的事情了；至于更新版本就更加头痛了——如果你没有定制（customisation）还好，如果你喜欢在源代码级别修修补补（有时候也是逼不得已，因为要除错嘛），如果一更新，之前的努力就前功尽弃，要重新来过了！不过啦，也就是这么折腾，才能飞速学习。这就是我自己很浅薄的几点心得了。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;最近在自己公司做了两个网站，算上去年帮Serena做的一个，和帮Cindy的公司做得一个，还有教会青年团契的网站。勉强凑足五个放出地址来，大家随便看看吧。第三、第四两个都是短时间内做出的小东西，最后一个是WP架的站，入不了各位的法眼，包涵下罗。&lt;/div&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.terrafirmainvestments.com.au/" target="_blank"&gt;terrafirmainvestments.com.au&lt;/a&gt;
&lt;li&gt;&lt;a href="http://www.enviroloans.com.au/" target="_blank"&gt;enviroloans.com.au&lt;/a&gt;
&lt;li&gt;&lt;a href="http://hellokitty.drinz.com/" target="_blank"&gt;hellokitty.drinz.com&lt;/a&gt;
&lt;li&gt;&lt;a href="http://yoursuperchoice.drinz.com/" target="_blank"&gt;yoursuperchoice.drinz.com&lt;/a&gt;
&lt;li&gt;&lt;a href="http://www.hua-en.net/" target="_blank"&gt;hua-en.net&lt;/a&gt;
&lt;li&gt;&lt;a href="http://simpsons.drinz.com/" target="_blank"&gt;simpsons.drinz.com&lt;/a&gt;
&lt;/ul&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-9100137331186195870&amp;page=RSS%3a+%e6%9c%ac%e7%ab%99Wordpress%e5%8d%87%e8%87%b3v2.1&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=drin.spaces.live.com&amp;amp;GT1=drin"&gt;</description><comments>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1646.entry#comment</comments><guid isPermaLink="true">http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1646.entry</guid><pubDate>Wed, 24 Jan 2007 13:25:34 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://drin.spaces.live.com/blog/cns!81B5D14FD7602262!1646/comments/feed.rss</wfw:commentRss><wfw:comment>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1646.entry#comment</wfw:comment><dcterms:modified>2008-01-05T05:31:24Z</dcterms:modified></item><item><title>修补WP插件FAlbum</title><link>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1599.entry</link><description>&lt;div&gt;Original URL:&lt;a href="http://www.drin.cn/fixing-error-97-of-falbum/" title="修补WP插件FAlbum"&gt; http://www.drin.cn/fixing-error-97-of-falbum/ &lt;/a&gt;&lt;/div&gt; &lt;div&gt;使用Wordpress插件FAlbum的用户很多。但是最近不少朋友遭遇一个编号97的错误。一个典型的出错信息如下: &lt;/div&gt;&lt;br&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;&lt;div&gt;FAlbum has encounted an error while processing your request. &lt;/div&gt;&lt;br&gt;
&lt;div&gt;Flickr returned an invalid status code: &lt;br&gt;97 - Missing signature &lt;/div&gt;&lt;br&gt;
&lt;div&gt;Backtrace: &lt;br&gt;FAlbum.class.php:1524 - /home/*****/public_html/*****/wp-content/plugins/falbum/FAlbum.class.php &lt;br&gt;falbum_wp-&amp;gt;_error() &lt;br&gt;FAlbum.class.php:1423 - /home/*****/public_html/*****/wp-content/plugins/falbum/FAlbum.class.php &lt;br&gt;falbum_wp-&amp;gt;_parse_xpath() &lt;br&gt;FAlbum.class.php:176 - /home/*****/public_html/*****/wp-content/plugins/falbum/FAlbum.class.php &lt;br&gt;falbum_wp-&amp;gt;_call_flickr() &lt;br&gt;FAlbum.class.php:99 - /home/*****/public_html/*****/wp-content/plugins/falbum/FAlbum.class.php &lt;br&gt;falbum_wp-&amp;gt;show_albums() &lt;br&gt;falbum.php:29 - /home/*****/public_html/*****/wp-content/themes/k2/falbum.php &lt;br&gt;falbum_wp-&amp;gt;show_photos() &lt;br&gt;album.php:12 - /home/*****/public_html/*****/wp-content/plugins/falbum/wp/album.php &lt;br&gt;include_once()&lt;/div&gt;&lt;br&gt;&lt;/blockquote&gt;
&lt;div&gt;在Flickr官方网站给出的解释&lt;a href="http://www.flickr.com/forums/bugs/26298/#reply129186" target="_blank"&gt;链接&lt;/a&gt; 。那个叫做Eric的Flickr工作人员解释说:&lt;/div&gt;&lt;br&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;&lt;div&gt;hub, If you are seeing 97 errors, it is likely because you passed a token but not a signature in your API call. If you pass a token, you must pass a signature also. (So, yes, your authentication is outdated in the sense that we fixed a bug that allowed for unsigned authed calls to the API to be honored, so you must update your code to follow the spec.) &lt;/div&gt;&lt;br&gt;
&lt;/blockquote&gt;
&lt;div&gt;大意就是，如果你遇到97错误，很可能是因为在你通过Flickr提供的开发API呼叫时，传递了一串暗号(Signature)，但没有包括一个签名(Token)。也就是说，签名和暗号必须同时被传递过去。然后Eric接着解释说，Flickr刚刚修复了一个小错误，之前的认证过程允许未签名的请求认证呼叫。而现在这种方式行不通了，所以必须通过修改代码来跟进。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;所以问题就很明白了。FAlbum的代码由于Flickr对于这个问题的修补而不能正常工作了。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;我去FAlbum的官方论坛察看，有一个专门的&lt;a href="http://www.randombyte.net/forum/viewtopic.php?p=2357#2357" target="_blank"&gt;帖子&lt;/a&gt; 反映了不少用户都遭遇了相似的问题（btw，帖子里面的drin就是我）。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;我想，若是等到作者Eli来解决问题，不知道要多久了。而每天看着自己博客的照片栏目一直出错是在心理不舒服。所以就打算自己动手。研究一下，就发现其实不难解决。下面是我小补丁（需要修改代码，请做好备份工作）。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;首先，打开在插件目录中falbum子目录下的FAlbum.class.php文件，寻找“function _call_flickr”，大概在第1403行左右。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;寻找以下代码:&lt;/div&gt;&lt;br&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;&lt;div&gt;if (!empty ($this-&amp;gt;secret)) {&lt;br&gt;  $api_sig = md5(FALBUM_SECRET.$auth_sig); &lt;br&gt;} &lt;/div&gt;&lt;br&gt;&lt;/blockquote&gt;
&lt;div&gt;替换为:&lt;/div&gt;&lt;br&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;&lt;div&gt;$secret = FALBUM_SECRET; &lt;br&gt;if (!empty ($secret) || $this-&amp;gt;_show_private() == ‘true’ || $post == true) {&lt;br&gt;  $api_sig = md5(FALBUM_SECRET.$auth_sig); &lt;br&gt;} &lt;/div&gt;&lt;br&gt;
&lt;div&gt;$args = array_merge($args, array (’api_sig’ =&amp;gt; $api_sig)); &lt;br&gt;ksort($args);&lt;/div&gt;&lt;br&gt;&lt;/blockquote&gt;
&lt;div&gt;然后保存，上传覆盖原来的文件。再打开你的FAlbum页面看看？一切都正常了吧。&lt;/div&gt;&lt;br&gt;
&lt;div&gt;呵呵，祝使用愉快。&lt;/div&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-9100137331186195870&amp;page=RSS%3a+%e4%bf%ae%e8%a1%a5WP%e6%8f%92%e4%bb%b6FAlbum&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=drin.spaces.live.com&amp;amp;GT1=drin"&gt;</description><comments>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1599.entry#comment</comments><guid isPermaLink="true">http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1599.entry</guid><pubDate>Fri, 18 Aug 2006 16:35:55 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://drin.spaces.live.com/blog/cns!81B5D14FD7602262!1599/comments/feed.rss</wfw:commentRss><wfw:comment>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1599.entry#comment</wfw:comment><dcterms:modified>2007-07-08T16:02:03Z</dcterms:modified></item><item><title>插件修改</title><link>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1548.entry</link><description>&lt;div&gt;Original URL:&lt;a href="http://www.drin.cn/modification-of-display-wp-feedreader/" title="插件修改"&gt; http://www.drin.cn/modification-of-display-wp-feedreader/ &lt;/a&gt;&lt;/div&gt; &lt;div&gt;只修改了一样事情——可以看到feed的内容了。代码照搬自WP FeedReader插件。&lt;/div&gt;&lt;br&gt;
&lt;blockquote&gt;&lt;div&gt;Plugin Name: Display WP FeedReader&lt;br&gt;Plugin URI: &lt;a href="http://blog.nahoya.com/archives/2005_10/50" target="_blank"&gt;blog.nahoya.com/archives/2005_10/50&lt;/a&gt;&lt;br&gt;Description: 在前台顯示 FeedReader 網誌聯播項目&lt;br&gt;Author: Beata&lt;br&gt;Modified By: Drin (April 1, 2006)&lt;br&gt;Author URI: &lt;a href="http://blog.nahoya.com/" target="_blank"&gt;blog.nahoya.com/&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;/blockquote&gt;
&lt;div&gt;source: &lt;a href="http://www.drin.cn/wp-readphp.php?file=display-wp-feedreader.phps" target="_blank"&gt;display-wp-feedreader.phps&lt;/a&gt;&lt;br&gt;demo: &lt;a href="http://www.drin.cn/?aggregator" target="_blank"&gt;aggregator of feeds at this site&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-9100137331186195870&amp;page=RSS%3a+%e6%8f%92%e4%bb%b6%e4%bf%ae%e6%94%b9&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=drin.spaces.live.com&amp;amp;GT1=drin"&gt;</description><comments>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1548.entry#comment</comments><guid isPermaLink="true">http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1548.entry</guid><pubDate>Sun, 02 Apr 2006 10:51:42 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://drin.spaces.live.com/blog/cns!81B5D14FD7602262!1548/comments/feed.rss</wfw:commentRss><wfw:comment>http://drin.spaces.live.com/Blog/cns!81B5D14FD7602262!1548.entry#comment</wfw:comment><dcterms:modified>2007-07-08T16:01:47Z</dcterms:modified></item></channel></rss>