<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Life Studio &#187; 缓存</title>
	<atom:link href="http://wange.im/tag/cache/feed" rel="self" type="application/rss+xml" />
	<link>http://wange.im</link>
	<description>My Life, My Studio...</description>
	<lastBuildDate>Fri, 20 Jan 2012 01:49:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>WordPress 自动生成并缓存网页缩略图</title>
		<link>http://wange.im/auto-thumbnail-and-cache-in-wordpress.html</link>
		<comments>http://wange.im/auto-thumbnail-and-cache-in-wordpress.html#comments</comments>
		<pubDate>Sat, 02 Oct 2010 12:42:18 +0000</pubDate>
		<dc:creator>万戈</dc:creator>
				<category><![CDATA[电脑网络]]></category>
		<category><![CDATA[ChinaBlogs]]></category>
		<category><![CDATA[ShrinkTheWeb]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[缓存]]></category>
		<category><![CDATA[缩略图]]></category>

		<guid isPermaLink="false">http://wange.im/?p=3895</guid>
		<description><![CDATA[网页缩略图的用途挺多的，比如说主题预览、友链链接、博客展示等等，但如果每次都手动去完成截屏、裁剪、上传、更新图片地址这些流程，势必会增加很多工作量，如果有什么函数、插件或者第三方的 API 可以帮助我们完成这些繁琐的步骤那会让我们的工作更加轻松愉快。 这里要推荐一个网站，ShrinkTheWeb，该网站已经可以帮助我们完成上面所说的截屏、裁剪、上传、更新图片地址这些流程，因为 ShrinkTheWeb 提供了一整套功能强大的 API，使用此 API 需要先注册为 ShrinkTheWeb 网站的会员，每个免费用户都可以使用限量次数的缩略图服务，就我看来，老外还是很慷慨的，这个免费用户的限量对于我们这些个人用户而言已经是绰绰有余。当然，这些绝对不是本文的重点，而接下来对 ShrinkTheWeb 生成的网页缩略图进行缓存并运用于 WordPress 才是本文的重点。 再进入正题前先说一下为什么要缓存缩略图，这和缓存 Gravatar 头像的道理是一样的。其一，因为从国外服务器调用图片的速度肯定没有从本地服务器快；其二，ShrinkTheWeb 有着面临被墙的危险（好像以前被墙过一次），如果一旦被墙，API 就会持续不断地调用无法跨越的墙外的图片，这会严重影响网站速度，甚至拖跨服务器；其三，在调用不到网页缩略图的时候，会显示一张印有 ShrinkTheWeb LOGO 的图片（不知道收费用户会不会是这样），即使作为免费用户，我也不愿意看到这样的 LOGO 图片，而缓存缩略图可以帮我们解决这一尴尬，因为之后提到的方法中可以设置默认图片；其四，ShrinkTheWeb 是明文输出最后的图片地址，地址中包括了 API Key，虽说是免费用户，但是如果被恶意盗用，我也没精力经常去注册更换 API Key，而缓存缩略图也可以弥补这一不足。 大家可以先看一下 DEMO，我在新主题 ChinaBlogs 中就运用了这一方法，包括首页的本期博客推荐位的头像和下面博客展示轮播上，都用了网页缓存缩略图的方法。方法如下： 一、准备工作： 在网站的根目录新建一个 thumbnail 的文件夹，并把权限设为 755 或者 777，这个目录是为了存放网页的缩略图，所以必须可写。再把希望的默认缩略图存放在主题目录的 images 文件夹中，我把这个文件命名为 thumb_default.png，这个目录和文件名各位可以根据需要修改。 二、在 WordPress 主题的 functions.php 中加入如下代码： function site_thumb( $stwsize, $stwurl, $alt, $id [...]]]></description>
			<content:encoded><![CDATA[<p>网页缩略图的用途挺多的，比如说主题预览、友链链接、博客展示等等，但如果每次都手动去完成截屏、裁剪、上传、更新图片地址这些流程，势必会增加很多工作量，如果有什么函数、插件或者第三方的 API 可以帮助我们完成这些繁琐的步骤那会让我们的工作更加轻松愉快。</p>
<p>这里要推荐一个网站，<a title="ShrinkTheWeb" rel="external nofollow" href="http://www.shrinktheweb.com/" target="_blank">ShrinkTheWeb</a>，该网站已经可以帮助我们完成上面所说的截屏、裁剪、上传、更新图片地址这些流程，因为 ShrinkTheWeb 提供了一整套功能强大的 API，使用此 API 需要先注册为 ShrinkTheWeb 网站的会员，每个免费用户都可以使用限量次数的缩略图服务，就我看来，老外还是很慷慨的，这个免费用户的限量对于我们这些个人用户而言已经是绰绰有余。当然，这些绝对不是本文的重点，而接下来对 ShrinkTheWeb 生成的网页缩略图进行缓存并运用于 WordPress 才是本文的重点。</p>
<p><img style="float: left;" src="http://sajgiw.bay.livefilestore.com/y1pJFe3hseRpnZb-p2AQBFcon2kSYGywMu89FTRyiWZt9RnGX4SMnKIJ_kfF009ZeQoVL8Kbg99pAuN2P-H5f6101U6IB3t6Oth/stw_thumb.jpg" alt="" />再进入正题前先说一下为什么要缓存缩略图，这和缓存 Gravatar 头像的道理是一样的。其一，因为从国外服务器调用图片的速度肯定没有从本地服务器快；其二，ShrinkTheWeb 有着面临被墙的危险（好像以前被墙过一次），如果一旦被墙，API 就会持续不断地调用无法跨越的墙外的图片，这会严重影响网站速度，甚至拖跨服务器；其三，在调用不到网页缩略图的时候，会显示一张印有 ShrinkTheWeb LOGO 的图片（不知道收费用户会不会是这样），即使作为免费用户，我也不愿意看到这样的 LOGO 图片，而缓存缩略图可以帮我们解决这一尴尬，因为之后提到的方法中可以设置默认图片；其四，ShrinkTheWeb 是明文输出最后的图片地址，地址中包括了 API Key，虽说是免费用户，但是如果被恶意盗用，我也没精力经常去注册更换 API Key，而缓存缩略图也可以弥补这一不足。</p>
<p>大家可以先看一下 DEMO，我在新主题 <a title="ChinaBlogs" rel="external nofollow" href="http://chinablogs.org/" target="_blank">ChinaBlogs</a> 中就运用了这一方法，包括首页的本期博客推荐位的头像和下面博客展示轮播上，都用了网页缓存缩略图的方法。方法如下：</p>
<p>一、准备工作：</p>
<p>在网站的根目录新建一个 thumbnail 的文件夹，并把权限设为 755 或者 777，这个目录是为了存放网页的缩略图，所以必须可写。再把希望的默认缩略图存放在主题目录的 images 文件夹中，我把这个文件命名为 thumb_default.png，这个目录和文件名各位可以根据需要修改。</p>
<p>二、在 WordPress 主题的 functions.php 中加入如下代码：</p>
<p><DIV style="FONT-FAMILY: 'Courier New', 'Lucida Console', 'monospace'; COLOR: #000000" class=source jQuery1286154547234="14"><SPAN style="COLOR: #000080; FONT-WEIGHT: bold">function</SPAN> <SPAN style="COLOR: #000000">site_thumb</SPAN>( <SPAN style="COLOR: #000000">$stwsize</SPAN><SPAN style="COLOR: #000000">,</SPAN> <SPAN style="COLOR: #000000">$stwurl</SPAN><SPAN style="COLOR: #000000">,</SPAN> <SPAN style="COLOR: #000000">$alt</SPAN><SPAN style="COLOR: #000000">,</SPAN> <SPAN style="COLOR: #000000">$id</SPAN> <SPAN style="COLOR: #000000">=</SPAN> <SPAN style="COLOR: #000080; FONT-WEIGHT: bold">false</SPAN><SPAN style="COLOR: #000000">,</SPAN> <SPAN style="COLOR: #000000">$stwaccesskeyid</SPAN> <SPAN style="COLOR: #000000">){</SPAN><BR>&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #000000">$path_parts</SPAN> <SPAN style="COLOR: #000000">=</SPAN> <SPAN style="COLOR: #000000">pathinfo</SPAN>(<SPAN style="COLOR: #000000">$stwurl</SPAN>);<BR>&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #000000">$stwurl_temp</SPAN> <SPAN style="COLOR: #000000">=</SPAN> <SPAN style="COLOR: #000000">$path_parts</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #0000ff">&quot;filename&quot;</SPAN><SPAN style="COLOR: #000000">];</SPAN><BR>&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #000000">$id</SPAN> <SPAN style="COLOR: #000000">=</SPAN> ( <SPAN style="COLOR: #000080; FONT-WEIGHT: bold">false</SPAN> <SPAN style="COLOR: #000000">===</SPAN> <SPAN style="COLOR: #000000">$id</SPAN> ) <SPAN style="COLOR: #000000">?</SPAN> <SPAN style="COLOR: #0000ff">&#39;&#39;</SPAN> <SPAN style="COLOR: #000000">:</SPAN> <SPAN style="COLOR: #000000">$id</SPAN> <SPAN style="COLOR: #000000">=</SPAN> <SPAN style="COLOR: #0000ff">&#39;id=&quot;&#39;</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">$id</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #0000ff">&#39;&quot; &#39;</SPAN>;<BR>&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #000000">$thumb_pic</SPAN> <SPAN style="COLOR: #000000">=</SPAN> <SPAN style="COLOR: #000000">get_bloginfo</SPAN>(<SPAN style="COLOR: #0000ff">&#39;wpurl&#39;</SPAN><SPAN style="COLOR: #000000">).</SPAN> <SPAN style="COLOR: #0000ff">&#39;/thumbnail/&#39;</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">$stwurl_temp</SPAN><SPAN style="COLOR: #000000">.</SPAN> <SPAN style="COLOR: #0000ff">&#39;-&#39;</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">$stwsize</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #0000ff">&#39;.jpg&#39;</SPAN>;<BR>&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #000000">$thumb_file</SPAN> <SPAN style="COLOR: #000000">=</SPAN> <SPAN style="COLOR: #000000">ABSPATH</SPAN><SPAN style="COLOR: #000000">.</SPAN> <SPAN style="COLOR: #0000ff">&#39;thumbnail/&#39;</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">$stwurl_temp</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #0000ff">&#39;-&#39;</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">$stwsize</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #0000ff">&#39;.jpg&#39;</SPAN>;<BR>&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #000000">$expired</SPAN> <SPAN style="COLOR: #000000">=</SPAN> <SPAN style="COLOR: #0000ff">604800</SPAN>;&nbsp;&nbsp;&nbsp; <SPAN style="FONT-STYLE: italic; COLOR: #008800">//七天自动更新</SPAN><BR>&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #000080; FONT-WEIGHT: bold">if</SPAN> ( <SPAN style="COLOR: #000000">empty</SPAN>(<SPAN style="COLOR: #000000">$stwurl</SPAN>) ) <SPAN style="COLOR: #000000">copy</SPAN>( <SPAN style="COLOR: #000000">get_bloginfo</SPAN>(<SPAN style="COLOR: #0000ff">&#39;template_url&#39;</SPAN><SPAN style="COLOR: #000000">).</SPAN><SPAN style="COLOR: #0000ff">&#39;/images/thumb_default.png&#39;</SPAN><SPAN style="COLOR: #000000">,</SPAN> <SPAN style="COLOR: #000000">$thumb_file</SPAN> );<BR>&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #000080; FONT-WEIGHT: bold">if</SPAN> ( <SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">is_file</SPAN>(<SPAN style="COLOR: #000000">$thumb_file</SPAN>) || (<SPAN style="COLOR: #000000">time</SPAN>() <SPAN style="COLOR: #000000">-</SPAN> <SPAN style="COLOR: #000000">filemtime</SPAN>(<SPAN style="COLOR: #000000">$thumb_file</SPAN>)) <SPAN style="COLOR: #000000">&gt;</SPAN> <SPAN style="COLOR: #000000">$expired</SPAN> <SPAN style="COLOR: #000000">){</SPAN><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #000000">$stwapi</SPAN> <SPAN style="COLOR: #000000">=</SPAN> <SPAN style="COLOR: #0000ff">&#39;http://images.shrinktheweb.com/xino.php?stwembed=1&amp;stwaccesskeyid=&#39;</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">$stwaccesskeyid</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #0000ff">&#39;&amp;stwsize=&#39;</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">$stwsize</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #0000ff">&#39;&amp;stwurl=&#39;</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">$stwurl</SPAN>;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #000000">copy</SPAN>(<SPAN style="COLOR: #000000">$stwapi</SPAN><SPAN style="COLOR: #000000">,</SPAN> <SPAN style="COLOR: #000000">$thumb_file</SPAN>); <SPAN style="COLOR: #000000">$thumb_pic</SPAN> <SPAN style="COLOR: #000000">=</SPAN> <SPAN style="COLOR: #000000">esc_attr</SPAN>(<SPAN style="COLOR: #000000">$stwapi</SPAN>);<BR>&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #000000">}</SPAN><BR>&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: #000080; FONT-WEIGHT: bold">return</SPAN> <SPAN style="COLOR: #0000ff">&#39;&lt;img &#39;</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">$id</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #0000ff">&#39;src=&quot;&#39;</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">$thumb_pic</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #0000ff">&#39;&quot; alt=&quot;&#39;</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">$alt</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #0000ff">&#39;&quot; /&gt;&#39;</SPAN>;<BR><SPAN style="COLOR: #000000">}</SPAN><BR></DIV></p>
<p>三、参数介绍：</p>
<p>1、$stwsize</p>
<p>这是缩略图的大小，有六个值可以选择：mcr、tny、vsm、sm、lg、xlg，这六个值分别对应的尺寸是：75*56、90*68、100*75、120*90、200*150、320*240。</p>
<p>2、$stwurl</p>
<p>这个就是需要生成的网页的网址，网址可以是 http 或者 https 开头，也可以是 www 开头，或者不是 www 开头也可以。</p>
<p>3、$alt 和 $id</p>
<p>顾名思义，就是最后输出 img 标签的 alt 和 id，这个就不多说了。</p>
<p>4、$stwaccesskeyid</p>
<p>这个就是我们的 API Key 了，在注册 ShrinkTheWeb 之后，会在控制面板中得到两个 Key，Access Key 和 Secret Key，这里我们用到的 $stwaccesskeyid 参数就是指 Access Key，可以无视 Secret Key。</p>
<p>四、调用函数：</p>
<p>因为已经写的不少，这里就不作扩展了，只是举一个简单的例子：</p>
<div class="source" style="font-family: 'Courier New', 'Lucida Console', 'monospace'; color: #000000;"><span style="color: #008080;">&lt;?php</span> <span style="color: #000080; font-weight: bold;">echo</span> <span style="color: #000000;">site_thumb</span>( <span style="color: #000000;">$stwsize</span> <span style="color: #000000;">=</span> <span style="color: #0000ff;">"lg"</span><span style="color: #000000;">,</span> <span style="color: #000000;">$stwurl</span> <span style="color: #000000;">=</span> <span style="color: #0000ff;">"http://wange.im"</span><span style="color: #000000;">,</span> <span style="color: #000000;">$alt</span> <span style="color: #000000;">=</span> <span style="color: #0000ff;">"Life Studio"</span><span style="color: #000000;">,</span> <span style="color: #000000;">$id</span> <span style="color: #000000;">=</span> <span style="color: #0000ff;">"wange"</span><span style="color: #000000;">,</span> <span style="color: #000000;">$stwaccesskeyid</span> <span style="color: #000000;">=</span> <span style="color: #0000ff;">"!!!Access Key here!!!"</span> );<span style="color: #008080;">?&gt;</span></div>
<p>这段代段输出的 HTML 代码如下，可以作一下对比参考：</p>
<div class="source" style="font-family: 'Courier New', 'Lucida Console', 'monospace'; color: #000000;"><span style="color: #000080; font-weight: bold;">&lt;img</span> <span style="color: #ff0000;">alt=</span><span style="color: #0000ff;">"Life Studio"</span> <span style="color: #ff0000;">src=</span><span style="color: #0000ff;">"http://localhost/thumbnail/wange.im-lg.jpg"</span> <span style="color: #ff0000;">id=</span><span style="color: #0000ff;">"wange"</span> <span style="color: #000080; font-weight: bold;">/&gt;</span></div>
<p>这时候你网站根目录下的 thumbnail 目录下就已经生成了一张 wange.im-lg.jpg 尺寸为 200*150px 的网页缩略图。好了，一个程序一篇文章，这就是我今天折腾的成果，各位 have fun~</p>
<div id="rl_posts">    <div id="rl_posts_hd" class="box_hd">        <span id="rl_posts_title" class="box_title">与 <h2 itemprop="keywords"><a href="http://wange.im/tag/chinablogs/" title="ChinaBlogs" rel="tag">ChinaBlogs</a>,<a href="http://wange.im/tag/shrinktheweb/" title="ShrinkTheWeb" rel="tag">ShrinkTheWeb</a>,<a href="http://wange.im/tag/wordpress/" title="WordPress" rel="tag">WordPress</a>,<a href="http://wange.im/tag/cache/" title="缓存" rel="tag">缓存</a>,<a href="http://wange.im/tag/thumbnail/" title="缩略图" rel="tag">缩略图</a></h2> 相关的文章        </span>    </div>    <div id="rl_posts_bd">        <ul class="clearfix"><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/most-viewed-with-thumbs-for-wordpress.html" rel="bookmark" title="WordPress 实现带图片的点击量排行">WordPress 实现带图片的点击量排行</a>        <div class="rl_date">2011年03月26日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/timthumb-for-wordpress.html" rel="bookmark" title="Wordpress 的缩略图利器 timthumb">Wordpress 的缩略图利器 timthumb</a>        <div class="rl_date">2011年01月17日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/wordpress-theme-for-chinablogs.html" rel="bookmark" title="中国博客联盟改版主题上线">中国博客联盟改版主题上线</a>        <div class="rl_date">2010年10月1日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/wordpress-thumbnail-without-plugins.html" rel="bookmark" title="WordPress 非插件缩略图的综合应用">WordPress 非插件缩略图的综合应用</a>        <div class="rl_date">2010年09月14日</div>    </div></li>        </ul>    </div></div>]]></content:encoded>
			<wfw:commentRss>http://wange.im/auto-thumbnail-and-cache-in-wordpress.html/feed</wfw:commentRss>
		<slash:comments>101</slash:comments>
		</item>
		<item>
		<title>QQ 自定义头像+Gravatar 头像缓存</title>
		<link>http://wange.im/qq-gravatar-cache.html</link>
		<comments>http://wange.im/qq-gravatar-cache.html#comments</comments>
		<pubDate>Tue, 06 Apr 2010 11:42:57 +0000</pubDate>
		<dc:creator>万戈</dc:creator>
				<category><![CDATA[电脑网络]]></category>
		<category><![CDATA[转来载去]]></category>
		<category><![CDATA[gravatar]]></category>
		<category><![CDATA[QQ]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://wange.im/?p=2969</guid>
		<description><![CDATA[趁清明小长假的时候，我折腾了非插件实现 WordPress 显示 QQ 自定义头像的功能，并且同时实现  Gravatar 头像缓存，让 Gravatar 头像与 QQ 自定义头像两者共存。很是可惜，还有那么一小小小部分没能完美实现，因为我是个完美主义者，一定要追求最完美的表现方式，所以不完美的方法我也不写了。今天还在研究此功能的时候，无意中发现，居然已经有高手折腾出来了，佩服佩服，不过对我来说还不是很完美，有兴趣的朋友可以先试试啦。 方法： 1、在对应地方（这里是wp-content/cache/img）建立权限755的文件夹，放上默认头像 2、在主题 functions.php 里面添加以下代码（&#60;?php ?&#62;之间的部分） add_filter('get_avatar', 'cache', 10, 3); function cache($avatar, $comment, $size){ $t = 604800; //設定7天, 單位:秒 $d = get_bloginfo('wpurl').'/wp-content/cache/img/default.jpg';//默认图片 $face_size = false;//单独指定头像的大小, false or integer $qq_face_url = 'http://qun.qq.com/cgi/svr/face/getface?type=1&#38;amp;uin=%s';      //QQ头像地址, %s表示QQ号     if ( isset($comment-&#62;comment_author_url) &#38;&#38; preg_match ('/^(http:\/\/)?[1-9][0-9]*$/i', $comment-&#62;comment_author_url) ) {         $qq [...]]]></description>
			<content:encoded><![CDATA[<p>趁清明小长假的时候，我折腾了非插件实现 WordPress 显示 QQ 自定义头像的功能，并且同时实现  Gravatar 头像缓存，让 Gravatar 头像与 QQ 自定义头像两者共存。很是可惜，还有那么一小小小部分没能完美实现，因为我是个完美主义者，一定要追求最完美的表现方式，所以不完美的方法我也不写了。今天还在研究此功能的时候，无意中发现，居然已经有高手折腾出来了，佩服佩服，不过对我来说还不是很完美，有兴趣的朋友可以先试试啦。</p>
<p> 方法：</p>
<p>1、在对应地方（这里是wp-content/cache/img）建立权限755的文件夹，放上默认头像</p>
<p>2、在主题 functions.php 里面添加以下代码（&lt;?php ?&gt;<!--p 和-->之间的部分）</p>
<div class="source" style="font-family: 'Courier New','Lucida Console','monospace'; color: #000000;"><span style="color: #000000;">add_filter</span>(<span style="color: #0000ff;">'get_avatar'</span><span style="color: #000000;">,</span> <span style="color: #0000ff;">'cache'</span><span style="color: #000000;">,</span> <span style="color: #0000ff;">10</span><span style="color: #000000;">,</span> <span style="color: #0000ff;">3</span>);<br />
<span style="color: #000080; font-weight: bold;">function</span> <span style="color: #000000;">cache</span>(<span style="color: #000000;">$avatar</span><span style="color: #000000;">,</span> <span style="color: #000000;">$comment</span><span style="color: #000000;">,</span> <span style="color: #000000;">$size</span><span style="color: #000000;">){</span><br />
<span style="color: #000000;">$t</span> <span style="color: #000000;">=</span> <span style="color: #0000ff;">604800</span>; <span style="font-style: italic; color: #008800;">//設定7天, 單位:秒</span><br />
<span style="color: #000000;">$d</span> <span style="color: #000000;">=</span> <span style="color: #000000;">get_bloginfo</span>(<span style="color: #0000ff;">'wpurl'</span><span style="color: #000000;">).</span><span style="color: #0000ff;">'/wp-content/cache/img/default.jpg'</span>;<span style="font-style: italic; color: #008800;">//默认图片</span><br />
<span style="color: #000000;">$face_size</span> <span style="color: #000000;">=</span> <span style="color: #000080; font-weight: bold;">false</span>;<span style="font-style: italic; color: #008800;">//单独指定头像的大小, false or integer</span><br />
<span style="color: #000000;">$qq_face_url</span> <span style="color: #000000;">=</span> <span style="color: #0000ff;">'http://qun.qq.com/cgi/svr/face/getface?type=1&amp;amp;uin=%s'</span>;     <br />
<span style="font-style: italic; color: #008800;">//QQ头像地址, %s表示QQ号     </span><br />
<span style="color: #000080; font-weight: bold;">if</span> ( <span style="color: #000000;">isset</span>(<span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">comment_author_url</span>) <span style="color: #000000;">&amp;&amp;</span> <span style="color: #000000;">preg_match</span><br />
(<span style="color: #0000ff;">'/^(http:\/\/)?[1-9][0-9]*$/i'</span><span style="color: #000000;">,</span> <span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">comment_author_url</span>) ) <span style="color: #000000;">{</span><br />
        <span style="color: #000000;">$qq</span> <span style="color: #000000;">=</span> <span style="color: #000000;">preg_replace</span>(<span style="color: #0000ff;">'|\D*|'</span><span style="color: #000000;">,</span> <span style="color: #0000ff;">''</span><span style="color: #000000;">,</span> <span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">comment_author_url</span>);<br />
        <span style="color: #000000;">$avatar</span> <span style="color: #000000;">=</span> <span style="color: #000000;">preg_replace</span>(<span style="color: #0000ff;">'/src=\'[^\']*\'/'</span><span style="color: #000000;">,</span><br />
                <span style="color: #0000ff;">'src=\''</span> <span style="color: #000000;">.</span> <span style="color: #000000;">str_replace</span>(<span style="color: #0000ff;">'%s'</span><span style="color: #000000;">,</span> <span style="color: #000000;">$qq</span><span style="color: #000000;">,</span> <span style="color: #000000;">$qq_face_url</span>) <span style="color: #000000;">.</span> <span style="color: #0000ff;">'\''</span><span style="color: #000000;">,</span><br />
                <span style="color: #000000;">$avatar</span>);<br />
        <span style="color: #000080; font-weight: bold;">if</span>( <span style="color: #000000;">$face_size</span> )<br />
<span style="color: #000000;">$avatar</span> <span style="color: #000000;">=</span> <span style="color: #000000;">str_replace</span>(<span style="color: #0000ff;">'\''</span> <span style="color: #000000;">.</span> <span style="color: #000000;">$size</span> <span style="color: #000000;">.</span> <span style="color: #0000ff;">'\''</span><span style="color: #000000;">,</span> <span style="color: #0000ff;">'\''</span> <span style="color: #000000;">.</span> <span style="color: #000000;">$face_size</span> <span style="color: #000000;">.</span> <span style="color: #0000ff;">'\''</span><span style="color: #000000;">,</span> <span style="color: #000000;">$avatar</span>);<br />
                <span style="color: #000080; font-weight: bold;">return</span> <span style="color: #000000;">$avatar</span>;<br />
                        <span style="color: #000000;">}</span><br />
        <span style="color: #000080; font-weight: bold;">else</span><span style="color: #000000;">{</span><br />
        <span style="color: #000000;">$f</span> <span style="color: #000000;">=</span> <span style="color: #000000;">md5</span>(<span style="color: #000000;">strtolower</span>(<span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">comment_author_email</span>));<br />
        <span style="color: #000000;">$r</span> <span style="color: #000000;">=</span> <span style="color: #000000;">get_option</span>(<span style="color: #0000ff;">'avatar_rating'</span>);<br />
        <span style="color: #000000;">$g</span> <span style="color: #000000;">=</span> <span style="color: #0000ff;">'http://www.gravatar.com/avatar/'</span><span style="color: #000000;">.</span><span style="color: #000000;">$f</span><span style="color: #000000;">.</span><span style="color: #0000ff;">'?s=50&amp;d='</span><span style="color: #000000;">.</span><span style="color: #000000;">$d</span><span style="color: #000000;">.</span><span style="color: #0000ff;">'&amp;r='</span><span style="color: #000000;">.</span><span style="color: #000000;">$r</span>;<br />
        <span style="color: #000000;">$a</span> <span style="color: #000000;">=</span> <span style="color: #000000;">get_bloginfo</span>(<span style="color: #0000ff;">'wpurl'</span><span style="color: #000000;">).</span><span style="color: #0000ff;">'/wp-content/cache/img/'</span><span style="color: #000000;">.</span><span style="color: #000000;">$f</span><span style="color: #000000;">.</span><span style="color: #0000ff;">'.jpg'</span>;<br />
        <span style="color: #000000;">$e</span> <span style="color: #000000;">=</span> <span style="color: #000000;">ABSPATH</span> <span style="color: #000000;">.</span><span style="color: #0000ff;">'/wp-content/cache/img/'</span><span style="color: #000000;">.</span><span style="color: #000000;">$f</span><span style="color: #000000;">.</span><span style="color: #0000ff;">'.jpg'</span>;<br />
        <span style="color: #000080; font-weight: bold;">if</span> ( <span style="color: #000000;">!</span><span style="color: #000000;">is_file</span>(<span style="color: #000000;">$e</span>) || (<span style="color: #000000;">time</span>() <span style="color: #000000;">-</span> <span style="color: #000000;">filemtime</span>(<span style="color: #000000;">$e</span>)) <span style="color: #000000;">&gt;</span> <span style="color: #000000;">$t</span> <span style="color: #000000;">){</span><br />
                                <span style="color: #000000;">copy</span>(<span style="color: #000000;">$g</span><span style="color: #000000;">,</span> <span style="color: #000000;">$e</span>);<br />
                                <span style="background-color: #e3d2d2; color: #a61717;">@</span><span style="color: #000000;">chmod</span>(<span style="color: #000000;">$e</span><span style="color: #000000;">,</span><span style="color: #0000ff;">0777</span>);<br />
                        <span style="color: #000080; font-weight: bold;">if</span> (<span style="color: #000000;">filesize</span>(<span style="color: #000000;">$e</span>) <span style="color: #000000;">&lt;</span> <span style="color: #0000ff;">500</span>) <span style="color: #000000;">{</span><br />
                                <span style="color: #000000;">copy</span>(<span style="color: #000000;">$d</span><span style="color: #000000;">,</span> <span style="color: #000000;">$e</span>);<br />
                                <span style="color: #000000;">}</span><br />
                        <span style="color: #000000;">}</span><br />
                        <span style="color: #000080; font-weight: bold;">if</span>( <span style="color: #000000;">$face_size</span> )<br />
                        <span style="color: #000000;">$size</span> <span style="color: #000000;">=</span> <span style="color: #000000;">$face_size</span>;<br />
                        <span style="color: #000000;">$avatar</span> <span style="color: #000000;">=</span> <span style="color: #0000ff;">"&lt;img  src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' /&gt;"</span>;<br />
                <span style="color: #000080; font-weight: bold;">return</span> <span style="color: #000000;">$avatar</span>;<br />
        <span style="color: #000000;">}</span><br />
        <span style="color: #000080; font-weight: bold;">return</span> <span style="color: #000000;">$avatar</span>;<br />
<span style="color: #000000;">}</span></div>
<p>本方法转自：http://u.wange.im/04，原作者还提供了 QQ 头像缓存的方法：http://u.wange.im/05，不过经作者测试发现获取 QQ 头像（尤其是自定义头像）与网速和服务器有很大关系，错误的话经常返回默认头像。</p>
<p>我暂且没有使用这个方法，只是转载过来作为收藏，等我有空再来修改成为适合我用的完美版，最近太忙了，实在没时间，以至于只能靠转载来弥补我的文囧，请读者和搜索引擎原谅我吧～</p>
<div id="rl_posts">    <div id="rl_posts_hd" class="box_hd">        <span id="rl_posts_title" class="box_title">与 <h2 itemprop="keywords"><a href="http://wange.im/tag/gravatar/" title="gravatar" rel="tag">gravatar</a>,<a href="http://wange.im/tag/qq/" title="QQ" rel="tag">QQ</a>,<a href="http://wange.im/tag/wordpress/" title="WordPress" rel="tag">WordPress</a>,<a href="http://wange.im/tag/cache/" title="缓存" rel="tag">缓存</a></h2> 相关的文章        </span>    </div>    <div id="rl_posts_bd">        <ul class="clearfix"><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/gravatar-buffer-supplement-in-wordpress.html" rel="bookmark" title="Wordpress gravatar 头像缓存补充说明">Wordpress gravatar 头像缓存补充说明</a>        <div class="rl_date">2010年01月19日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/recent-comment-with-avatar-in-wordpress.html" rel="bookmark" title="Wordpress 侧边栏带头像的最新评论">Wordpress 侧边栏带头像的最新评论</a>        <div class="rl_date">2009年12月26日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/timthumb.php?src=http://wange.im/cache/readerswall.jpg&amp;h=45&amp;w=45&amp;zc=1" alt="Wordpress 免插件读者墙修订版" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/readerwall-revision-for-wordpress.html" rel="bookmark" title="Wordpress 免插件读者墙修订版">Wordpress 免插件读者墙修订版</a>        <div class="rl_date">2009年12月1日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/cache-gravatar-for-wordpress-2-7.html" rel="bookmark" title="Wordpress 2.7+主题 gravatar 头像缓存">Wordpress 2.7+主题 gravatar 头像缓存</a>        <div class="rl_date">2009年11月13日</div>    </div></li>        </ul>    </div></div>]]></content:encoded>
			<wfw:commentRss>http://wange.im/qq-gravatar-cache.html/feed</wfw:commentRss>
		<slash:comments>99</slash:comments>
		</item>
		<item>
		<title>解决 favicon 图标无法被 google 缓存</title>
		<link>http://wange.im/favicon-cache-by-google.html</link>
		<comments>http://wange.im/favicon-cache-by-google.html#comments</comments>
		<pubDate>Tue, 26 Jan 2010 12:17:20 +0000</pubDate>
		<dc:creator>万戈</dc:creator>
				<category><![CDATA[电脑网络]]></category>
		<category><![CDATA[Favicon]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://wange.im/?p=2614</guid>
		<description><![CDATA[先简单的扫一下盲，什么是 favicon 图标，favicon 就是出现在浏览器地址栏左侧的那个小图标。所谓 favicon，即 Favorites Icon 的缩写，中文名称是网站头像，顾名思义，便使其可以让浏览器的收藏夹中除显示相应的标题外，还以图标的方式区别不同的网站。（以上摘自百度百科） 那为什么有些站长在添加 favicon.ico 图标后，为什么还是无法正常显示呢？你可以试试自己的网站能否正常显示且被 google 缓存接受，只要在 http://www.google.com/s2/favicons?domain= 后加入自己的域名就行，比如我的 favicon 图标在 google 中的缓存就是 http://www.google.com/s2/favicons?domain=wange.im，（=后不需要加http://）我总结了一些小经验，欢迎指正。 1、favicon.ico 最好是添加在网站根目录下。 没有什么明文规定 favicon.ico 图标必须放在哪一个目录下，但是实践证明，在网站根目录的 favicon.ico 更有利于正常显示，也方便 google 缓存 favicon。 比如，芒果的网站，在浏览器中可以正常显示 favicon 图标，但是没有被 google 缓存，其原因就是 favicon.ico 没有被放在网站根目录下，而是在主题文件夹的/image/下，看其源码就知道了，google 拐不过这个弯来，所以还是放在根目录比较好。 2、favicon.ico 最好不要超过2kb。 谁也没有规定过 favicon.ico 多大才好，但是仅在半厘米之大的小方块里显示图标，我们实在没有必要将其像素做的太高，那样的话会不利于 google 缓存图标。 比如，盛者无罪的网站，在浏览器中确实可以正常显示，也是放在了网站的根目录下，但是却没有被 google 缓存，显示出了默认的小地球图标，因为该网站的 favicon.ico 有 70K 之巨，建议优化之。 3、favicon.ico 最好是16px*16px。 理论上来说 [...]]]></description>
			<content:encoded><![CDATA[<p>先简单的扫一下盲，什么是 favicon 图标，favicon 就是出现在浏览器地址栏左侧的那个小图标。所谓 favicon，即 Favorites Icon 的缩写，中文名称是网站头像，顾名思义，便使其可以让浏览器的收藏夹中除显示相应的标题外，还以图标的方式区别不同的网站。（以上摘自百度百科）</p>
<p>那为什么有些站长在添加 favicon.ico 图标后，为什么还是无法正常显示呢？你可以试试自己的网站能否正常显示且被 google 缓存接受，只要在 http://www.google.com/s2/favicons?domain= 后加入自己的域名就行，比如我的 favicon 图标在 google 中的缓存就是 http://www.google.com/s2/favicons?domain=wange.im，（=后不需要加http://）我总结了一些小经验，欢迎指正。</p>
<p><strong>1、favicon.ico 最好是添加在网站根目录下。</strong></p>
<p>没有什么明文规定 favicon.ico 图标必须放在哪一个目录下，但是实践证明，在网站根目录的 favicon.ico 更有利于正常显示，也方便 google 缓存 favicon。</p>
<p>比如，<a title="芒果" href="http://www.mangguo.org/" target="_blank">芒果</a>的网站，在浏览器中可以正常显示 favicon 图标，但是没有被 google 缓存，其原因就是 favicon.ico 没有被放在网站根目录下，而是在主题文件夹的/image/下，看其源码就知道了，google 拐不过这个弯来，所以还是放在根目录比较好。</p>
<p><strong>2、favicon.ico 最好不要超过2kb。</strong></p>
<p>谁也没有规定过 favicon.ico 多大才好，但是仅在半厘米之大的小方块里显示图标，我们实在没有必要将其像素做的太高，那样的话会不利于 google 缓存图标。</p>
<p>比如，<a title="盛者无罪" href="http://www.johnsheng.cn/" target="_blank">盛者无罪</a>的网站，在浏览器中确实可以正常显示，也是放在了网站的根目录下，但是却没有被 google 缓存，显示出了默认的小地球图标，因为该网站的 favicon.ico 有 70K 之巨，建议优化之。</p>
<p><strong>3、favicon.ico 最好是16px*16px。</strong></p>
<p>理论上来说 favicon.ico 可以是16px*16px，或者是32px*32px的，但是即使你把 favicon.ico 做成128px*128px，也是可以在浏览器中显示的，比如<a title="商业哲学评论" href="http://www.busiphi.com/" target="_blank">商业哲学评论</a>的网站，但是像素太高也就不可避免地违背了上一条建议。再看<a title="超人流水账" href="http://www.superm.org" target="_blank">超人流水账</a>的网站，虽然他的 favicon 图标仅是32px*32px的，却还是没有被 google 成功缓存，所以还是建议 favicon 做成16px*16px就够了，小而精。</p>
<p><strong>4、在网页头部&lt;head&gt;&lt;/head&gt;之间添加如下代码：</strong></p>
<p>&lt;link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /&gt;</p>
<p>和前三条一样，这也不是硬性规定，有童鞋就不加。</p>
<p>比如，<a title="牧狼羊" href="http://yujan.com/" target="_blank">牧狼羊</a>的网站，同样，在浏览器中其 favicon.ico 是可以显示的，只是 google 无法缓存他的图标，究其原因，估计就是少加了这句代码，建议狼兄还是加上吧。</p>
<p>以上仅是些由个人经验所总结的，没有广泛验证过，欢迎拍砖。</p>
<div id="rl_posts">    <div id="rl_posts_hd" class="box_hd">        <span id="rl_posts_title" class="box_title">与 <h2 itemprop="keywords"><a href="http://wange.im/tag/favicon/" title="Favicon" rel="tag">Favicon</a>,<a href="http://wange.im/tag/google/" title="google" rel="tag">google</a>,<a href="http://wange.im/tag/browser/" title="浏览器" rel="tag">浏览器</a>,<a href="http://wange.im/tag/cache/" title="缓存" rel="tag">缓存</a></h2> 相关的文章        </span>    </div>    <div id="rl_posts_bd">        <ul class="clearfix"><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/timthumb.php?src=http://wange.im/cache/keywords.jpg&amp;h=45&amp;w=45&amp;zc=1" alt="像爱谷歌一样爱百度" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/give-more-love-to-baidu.html" rel="bookmark" title="像爱谷歌一样爱百度">像爱谷歌一样爱百度</a>        <div class="rl_date">2010年02月9日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/timthumb.php?src=http://wange.im/cache/readerswall.jpg&amp;h=45&amp;w=45&amp;zc=1" alt="Wordpress 免插件读者墙修订版" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/readerwall-revision-for-wordpress.html" rel="bookmark" title="Wordpress 免插件读者墙修订版">Wordpress 免插件读者墙修订版</a>        <div class="rl_date">2009年12月1日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/timthumb.php?src=http://wange.im/cache/favicons?domain=example.com&amp;h=45&amp;w=45&amp;zc=1" alt="获取 Favicon 服务美化友情链接" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/get-google-favicon-automatically.html" rel="bookmark" title="获取 Favicon 服务美化友情链接">获取 Favicon 服务美化友情链接</a>        <div class="rl_date">2009年07月8日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/timthumb.php?src=http://wange.im/cache/speech.jpg&amp;h=45&amp;w=45&amp;zc=1" alt="给 WordPress 添加语音搜索功能" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/x-webkit-speech-in-wordpress.html" rel="bookmark" title="给 WordPress 添加语音搜索功能">给 WordPress 添加语音搜索功能</a>        <div class="rl_date">2011年12月4日</div>    </div></li>        </ul>    </div></div>]]></content:encoded>
			<wfw:commentRss>http://wange.im/favicon-cache-by-google.html/feed</wfw:commentRss>
		<slash:comments>151</slash:comments>
		</item>
		<item>
		<title>WordPress gravatar 头像缓存补充说明</title>
		<link>http://wange.im/gravatar-buffer-supplement-in-wordpress.html</link>
		<comments>http://wange.im/gravatar-buffer-supplement-in-wordpress.html#comments</comments>
		<pubDate>Tue, 19 Jan 2010 11:38:46 +0000</pubDate>
		<dc:creator>万戈</dc:creator>
				<category><![CDATA[电脑网络]]></category>
		<category><![CDATA[gravatar]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://wange.im/?p=2584</guid>
		<description><![CDATA[前些天写了一篇《回调函数个性化 WordPress 评论样式》，本是一篇学习记录的文章，没想到还引起了一些反响，比如小邪本着打破沙锅问到底的原则深入研究了 PHP 的 Callback 与其在 WP 中的使用，还有 hzlzh 童鞋补充说明了 wp thread comment 和 wp recentcomments 插件在 AJAX 回复后实现 gravatar 头像缓存的方法。 其中对于 hzlzh 关于 wp thread comment 和 wp recentcomments 插件使用生成的 gravatar 头像缓存问题，hzlzh 在《回调函数个性化 WordPress 评论样式》评论中就和我讨论了一下下，在我准备下手解决这一问题前，hzlzh 就先我一步搞定了，佩服佩服，所以关于此方法我就不多说了，只是还想补充一点。 因为我的嵌套回复并不是用 wp thread comment 插件实现的，而是用 Willin 大师的 WordPress 内置嵌套评论专用 Ajax comments 的方法，不过一样遇到了 hzlzh 说到的问题，在回复某条评论后且在刷新当前页面之前，该评论的 gravatar 头像是直接从 gravatar.com 调取的，而没有用缓存，其实这个问题并不严重，但是为了追求完美与全站统一的效果，还是小改一下吧，修改的方法和原理大致与 hzlzh [...]]]></description>
			<content:encoded><![CDATA[<p>前些天写了一篇<a title="回调函数个性化 WordPress 评论样式" href="http://wange.im/diy-wordpress-comment-style.html">《回调函数个性化 WordPress 评论样式》</a>，本是一篇学习记录的文章，没想到还引起了一些反响，比如<a title="邪罗刹的菠萝阁" href="http://www.evlos.org/" target="_blank">小邪</a>本着打破沙锅问到底的原则深入研究了 <a title="PHP的Callback与其在WP中的使用" href="http://www.evlos.org/2010/01/19/php-and-wordpress-callback/" target="_blank">PHP 的 Callback 与其在 WP 中的使用</a>，还有 <a title="自力博客" href="http://www.hzlzh.com/" target="_blank">hzlzh</a> 童鞋补充说明了 wp thread comment 和 wp recentcomments 插件在 <a title="Gravatar头像本地缓存|修改get_avatar()函数" href="http://www.hzlzh.com/local-gravatar/" target="_blank">AJAX 回复后实现 gravatar 头像缓存</a>的方法。</p>
<p>其中对于 hzlzh 关于 wp thread comment 和 wp recentcomments 插件使用生成的 gravatar 头像缓存问题，hzlzh 在<a title="回调函数个性化 WordPress 评论样式" href="http://wange.im/diy-wordpress-comment-style.html">《回调函数个性化 WordPress 评论样式》</a>评论中就和我<a href="http://wange.im/diy-wordpress-comment-style.html/comment-page-2#comment-27990">讨论了一下下</a>，在我准备下手解决这一问题前，hzlzh 就先我一步搞定了，佩服佩服，所以关于此方法我就不多说了，只是还想补充一点。</p>
<p>因为我的嵌套回复并不是用 wp thread comment 插件实现的，而是用 Willin 大师的 <a title="WordPress 内置嵌套评论专用 Ajax comments" href="http://willin.heliohost.org/?p=1271" target="_blank">WordPress 内置嵌套评论专用 Ajax comments</a> 的方法，不过一样遇到了 hzlzh 说到的问题，在回复某条评论后且在刷新当前页面之前，该评论的 gravatar 头像是直接从 gravatar.com 调取的，而没有用缓存，其实这个问题并不严重，但是为了追求完美与全站统一的效果，还是小改一下吧，修改的方法和原理大致与 hzlzh 说的相同。</p>
<p>在 comments-ajax.php 文件中找到如下代码：</p>
<div class="source" style="font-family: 'Courier New','Lucida Console','monospace'; color: #000000;"><span style="color: #008080;">&lt;?php</span> <span style="color: #000080; font-weight: bold;">echo</span> <span style="color: #000000;">get_avatar</span>(<span style="color: #000000;">$comment</span><span style="color: #000000;">,</span><span style="color: #000000;">$size</span><span style="color: #000000;">=</span><span style="color: #0000ff;">'36'</span><span style="color: #000000;">,</span><span style="color: #000000;">$default</span><span style="color: #000000;">=</span><span style="color: #0000ff;">'&lt;path_to_url&gt;'</span> ); <span style="color: #008080;">?&gt;</span></div>
<p>将其替换成 Willin 大师的<a title="简易的 gravatar 头像缓存" href="http://willin.heliohost.org/?p=1277" target="_blank">迷你版 gravatar 头像缓存</a>方法中的代码：</p>
<div class="source" style="font-family: 'Courier New','Lucida Console','monospace'; color: #000000;"><span style="color: #008080;">&lt;?php</span><br />
<span style="color: #000000;">$f</span> <span style="color: #000000;">=</span> <span style="color: #000000;">md5</span>(<span style="color: #000000;">strtolower</span>(<span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">comment_author_email</span>));<br />
<span style="color: #000000;">$a</span> <span style="color: #000000;">=</span> <span style="color: #000000;">get_bloginfo</span>(<span style="color: #0000ff;">'wpurl'</span>) <span style="color: #000000;">.</span><span style="color: #0000ff;">'/gravatar/'</span><span style="color: #000000;">.</span><span style="color: #000000;">$f</span><span style="color: #000000;">.</span><span style="color: #0000ff;">'.jpg'</span>;<br />
<span style="color: #000000;">$e</span> <span style="color: #000000;">=</span> <span style="color: #000000;">ABSPATH</span> <span style="color: #000000;">.</span> <span style="color: #0000ff;">'gravatar/'</span><span style="color: #000000;">.</span><span style="color: #000000;">$f</span><span style="color: #000000;">.</span><span style="color: #0000ff;">'.jpg'</span>;<br />
<span style="color: #000000;">$t</span> <span style="color: #000000;">=</span> <span style="color: #0000ff;">1209600</span>;<br />
<span style="color: #000000;">$d</span> <span style="color: #000000;">=</span> <span style="color: #000000;">get_bloginfo</span>(<span style="color: #0000ff;">'wpurl'</span>)<span style="color: #000000;">.</span> <span style="color: #0000ff;">'/gravatar/default-gravatar.png'</span>;<br />
<span style="color: #000080; font-weight: bold;">if</span> ( <span style="color: #000000;">!</span><span style="color: #000000;">is_file</span>(<span style="color: #000000;">$e</span>) || (<span style="color: #000000;">time</span>() <span style="color: #000000;">-</span> <span style="color: #000000;">filemtime</span>(<span style="color: #000000;">$e</span>)) <span style="color: #000000;">&gt;</span> <span style="color: #000000;">$t</span> <span style="color: #000000;">){</span><br />
<span style="color: #000000;">$r</span> <span style="color: #000000;">=</span> <span style="color: #000000;">get_option</span>(<span style="color: #0000ff;">'avatar_rating'</span>);<br />
<span style="color: #000000;">$g</span> <span style="color: #000000;">=</span> <span style="color: #0000ff;">'http://www.gravatar.com/avatar/'</span><span style="color: #000000;">.</span><span style="color: #000000;">$f</span><span style="color: #000000;">.</span><span style="color: #0000ff;">'?s=32&amp;d='</span><span style="color: #000000;">.</span><span style="color: #000000;">$d</span><span style="color: #000000;">.</span><span style="color: #0000ff;">'&amp;r='</span><span style="color: #000000;">.</span><span style="color: #000000;">$r</span>;<br />
<span style="color: #000000;">copy</span>(<span style="color: #000000;">$g</span><span style="color: #000000;">,</span> <span style="color: #000000;">$e</span>);<br />
<span style="color: #000000;">}</span><br />
<span style="color: #000080; font-weight: bold;">if</span> (<span style="color: #000000;">filesize</span>(<span style="color: #000000;">$e</span>) <span style="color: #000000;">&lt;</span> <span style="color: #0000ff;">500</span>) <span style="color: #000000;">{</span><span style="color: #000000;">copy</span>(<span style="color: #000000;">$d</span><span style="color: #000000;">,</span> <span style="color: #000000;">$e</span><span style="color: #000000;">);}</span><br />
<span style="color: #008080;">?&gt;</span><br />
<span style="color: #000080; font-weight: bold;">&lt;img</span> <span style="color: #ff0000;">width=</span><span style="color: #0000ff;">'32'</span> <span style="color: #ff0000;">height=</span><span style="color: #0000ff;">'32'</span> <span style="color: #ff0000;">class=</span><span style="color: #0000ff;">'avatar'</span> <span style="color: #ff0000;">src=</span><span style="color: #0000ff;">'</span><span style="color: #008080;">&lt;?php</span> <span style="color: #000080; font-weight: bold;">echo</span> <span style="color: #000000;">$a</span> <span style="color: #008080;">?&gt;</span><span style="color: #0000ff;">'</span> <span style="color: #ff0000;">alt=</span><span style="color: #0000ff;">''</span> <span style="color: #000080; font-weight: bold;">/&gt;</span></div>
<p>同样的道理，对于侧边栏读者墙中的 gravatar 头像缓存也是这样实现的。</p>
<div id="rl_posts">    <div id="rl_posts_hd" class="box_hd">        <span id="rl_posts_title" class="box_title">与 <h2 itemprop="keywords"><a href="http://wange.im/tag/gravatar/" title="gravatar" rel="tag">gravatar</a>,<a href="http://wange.im/tag/wordpress/" title="WordPress" rel="tag">WordPress</a>,<a href="http://wange.im/tag/cache/" title="缓存" rel="tag">缓存</a></h2> 相关的文章        </span>    </div>    <div id="rl_posts_bd">        <ul class="clearfix"><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/qq-gravatar-cache.html" rel="bookmark" title="QQ 自定义头像+Gravatar 头像缓存">QQ 自定义头像+Gravatar 头像缓存</a>        <div class="rl_date">2010年04月6日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/recent-comment-with-avatar-in-wordpress.html" rel="bookmark" title="Wordpress 侧边栏带头像的最新评论">Wordpress 侧边栏带头像的最新评论</a>        <div class="rl_date">2009年12月26日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/timthumb.php?src=http://wange.im/cache/readerswall.jpg&amp;h=45&amp;w=45&amp;zc=1" alt="Wordpress 免插件读者墙修订版" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/readerwall-revision-for-wordpress.html" rel="bookmark" title="Wordpress 免插件读者墙修订版">Wordpress 免插件读者墙修订版</a>        <div class="rl_date">2009年12月1日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/cache-gravatar-for-wordpress-2-7.html" rel="bookmark" title="Wordpress 2.7+主题 gravatar 头像缓存">Wordpress 2.7+主题 gravatar 头像缓存</a>        <div class="rl_date">2009年11月13日</div>    </div></li>        </ul>    </div></div>]]></content:encoded>
			<wfw:commentRss>http://wange.im/gravatar-buffer-supplement-in-wordpress.html/feed</wfw:commentRss>
		<slash:comments>117</slash:comments>
		</item>
		<item>
		<title>WordPress 侧边栏带头像的最新评论</title>
		<link>http://wange.im/recent-comment-with-avatar-in-wordpress.html</link>
		<comments>http://wange.im/recent-comment-with-avatar-in-wordpress.html#comments</comments>
		<pubDate>Sat, 26 Dec 2009 09:41:00 +0000</pubDate>
		<dc:creator>万戈</dc:creator>
				<category><![CDATA[电脑网络]]></category>
		<category><![CDATA[gravatar]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[侧边栏]]></category>
		<category><![CDATA[留言]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://wange.im/?p=2406</guid>
		<description><![CDATA[谨以本文献给 Nox 童鞋。昨天 Nox 就问我怎么实现 WordPress 带头像的最新评论？因为当时正好在上班，电脑上没有 DW 和 notepad++ 这类软件，玩代码很不爽，又没有实力用 Windows 自带的记事本当场写出，所以就推荐了 zww 的成果：《带头像显示的最新评论代码 - 完善篇》，不过好像还是没有解决 Nox 的问题。现在也只有周末可以折腾折腾 WordPress 了，所以今天就拿自己的 WordPress 开刀，在侧边栏实现了带 gravatar 头像的最新评论。 先说说通用版： &#60;?php global $wpdb; $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved,comment_author_email, comment_type,comment_author_url, SUBSTRING(comment_content,1,25) AS com_excerpt FROM $wpdb-&#62;comments LEFT OUTER JOIN $wpdb-&#62;posts ON ($wpdb-&#62;comments.comment_post_ID = $wpdb-&#62;posts.ID) [...]]]></description>
			<content:encoded><![CDATA[<p>谨以本文献给 <a title="Nox的记忆匣子" href="http://imn.im/" target="_blank">Nox 童鞋</a>。昨天 Nox 就问我怎么实现 WordPress 带头像的最新评论？因为当时正好在上班，电脑上没有 DW 和 notepad++ 这类软件，玩代码很不爽，又没有实力用 Windows 自带的记事本当场写出，所以就推荐了 zww 的成果：<a title="带头像显示的最新评论代码 - 完善篇" href="http://zww.me/archives/24736" target="_blank">《带头像显示的最新评论代码 - 完善篇》</a>，不过好像还是没有解决 Nox 的问题。现在也只有周末可以折腾折腾 WordPress 了，所以今天就拿自己的 WordPress 开刀，在侧边栏实现了带 gravatar 头像的最新评论。</p>
<p>先说说通用版：</p>
<div class="source" style="font-family: 'Courier New','Lucida Console','monospace'; color: #000000;"><span style="color: #008080;">&lt;?php</span><br />
<span style="color: #000080; font-weight: bold;">global</span> <span style="color: #000000;">$wpdb</span>;<br />
<span style="color: #000000;">$sql</span> <span style="color: #000000;">=</span> <span style="color: #0000ff;">"SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved,comment_author_email, comment_type,comment_author_url, SUBSTRING(comment_content,1,25) AS com_excerpt FROM </span><span style="color: #0000ff;">$wpdb-&gt;comments</span><span style="color: #0000ff;"> LEFT OUTER JOIN </span><span style="color: #0000ff;">$wpdb-&gt;posts</span><span style="color: #0000ff;"> ON (</span><span style="color: #0000ff;">$wpdb-&gt;comments</span><span style="color: #0000ff;">.comment_post_ID = </span><span style="color: #0000ff;">$wpdb-&gt;posts</span><span style="color: #0000ff;">.ID) WHERE comment_approved = '1' AND comment_type = '' AND comment_author != '万戈' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10"</span>;<br />
<span style="color: #000000;">$comments</span> <span style="color: #000000;">=</span> <span style="color: #000000;">$wpdb</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">get_results</span>(<span style="color: #000000;">$sql</span>);<br />
<span style="color: #000000;">$output</span> <span style="color: #000000;">=</span> <span style="color: #000000;">$pre_HTML</span>;<br />
<span style="color: #000080; font-weight: bold;">foreach</span> (<span style="color: #000000;">$comments</span> <span style="color: #000080; font-weight: bold;">as</span> <span style="color: #000000;">$comment</span>) <span style="color: #000000;">{</span><br />
<span style="color: #000000;">$output</span> <span style="color: #000000;">.=</span> <span style="color: #0000ff;">"</span><span style="color: #0000ff;">\n</span><span style="color: #0000ff;">&lt;li&gt;"</span><span style="color: #000000;">.</span><span style="color: #000000;">get_avatar</span>(<span style="color: #000000;">get_comment_author_email</span>(<span style="color: #0000ff;">'comment_author_email'</span><span style="color: #000000;">),</span> <span style="color: #0000ff;">18</span>)<span style="color: #000000;">.</span> <span style="color: #0000ff;">" &lt;a href=</span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;">"</span> <span style="color: #000000;">.</span> <span style="color: #000000;">get_permalink</span>(<span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">ID</span>) <span style="color: #000000;">.</span> <span style="color: #0000ff;">"#comment-"</span> <span style="color: #000000;">.</span> <span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">comment_ID</span> <span style="color: #000000;">.</span> <span style="color: #0000ff;">"</span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;"> title=</span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;">"</span> <span style="color: #000000;">.</span> <span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">post_title</span> <span style="color: #000000;">.</span> <span style="color: #0000ff;">" 上的评论</span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;">&gt;"</span><span style="color: #000000;">.</span> <span style="color: #000000;">strip_tags</span>(<span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">comment_author</span>) <span style="color: #000000;">.</span><span style="color: #0000ff;">"： "</span><span style="color: #000000;">.</span> <span style="color: #000000;">strip_tags</span>(<span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">com_excerpt</span>) <span style="color: #000000;">.</span><span style="color: #0000ff;">"&lt;/a&gt;&lt;/li&gt;"</span>;<br />
<span style="color: #000000;">}</span><br />
<span style="color: #000000;">$output</span> <span style="color: #000000;">.=</span> <span style="color: #000000;">$post_HTML</span>;<br />
<span style="color: #000000;">$output</span> <span style="color: #000000;">=</span> <span style="color: #000000;">convert_smilies</span>(<span style="color: #000000;">$output</span>);<br />
<span style="color: #000080; font-weight: bold;">echo</span> <span style="color: #000000;">$output</span>;<br />
<span style="color: #008080;">?&gt;</span></div>
<p>再说说 gravatar 头像缓存版的，大家各取所需啦：</p>
<div class="source" style="font-family: 'Courier New','Lucida Console','monospace'; color: #000000;"><span style="color: #008080;">&lt;?php</span><br />
<span style="color: #000080; font-weight: bold;">global</span> <span style="color: #000000;">$wpdb</span>;<br />
<span style="color: #000000;">$sql</span> <span style="color: #000000;">=</span> <span style="color: #0000ff;">"SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved,comment_author_email, comment_type,comment_author_url, SUBSTRING(comment_content,1,25) AS com_excerpt FROM </span><span style="color: #0000ff;">$wpdb-&gt;comments</span><span style="color: #0000ff;"> LEFT OUTER JOIN </span><span style="color: #0000ff;">$wpdb-&gt;posts</span><span style="color: #0000ff;"> ON (</span><span style="color: #0000ff;">$wpdb-&gt;comments</span><span style="color: #0000ff;">.comment_post_ID = </span><span style="color: #0000ff;">$wpdb-&gt;posts</span><span style="color: #0000ff;">.ID) WHERE comment_approved = '1' AND comment_type = '' AND comment_author != '万戈' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10"</span>;<br />
<span style="color: #000000;">$comments</span> <span style="color: #000000;">=</span> <span style="color: #000000;">$wpdb</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">get_results</span>(<span style="color: #000000;">$sql</span>);<br />
<span style="color: #000000;">$output</span> <span style="color: #000000;">=</span> <span style="color: #000000;">$pre_HTML</span>;<br />
<span style="color: #000080; font-weight: bold;">foreach</span> (<span style="color: #000000;">$comments</span> <span style="color: #000080; font-weight: bold;">as</span> <span style="color: #000000;">$comment</span>) <span style="color: #000000;">{</span><br />
<span style="color: #000000;">$output</span> <span style="color: #000000;">.=</span> <span style="color: #0000ff;">"</span><span style="color: #0000ff;">\n</span><span style="color: #0000ff;">&lt;li&gt;&lt;img width=</span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;">18</span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;"> height=</span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;">18</span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;"> src=</span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;">http://wange.im/gravatar/cache/avatar/"</span><span style="color: #000000;">.</span><span style="color: #000000;">md5</span>(<span style="color: #000000;">strtolower</span>(<span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">comment_author_email</span>))<span style="color: #000000;">.</span> <span style="color: #0000ff;">" </span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;"> /&gt;&lt;a href=</span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;">"</span> <span style="color: #000000;">.</span> <span style="color: #000000;">get_permalink</span>(<span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">ID</span>) <span style="color: #000000;">.</span> <span style="color: #0000ff;">"#comment-"</span> <span style="color: #000000;">.</span> <span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">comment_ID</span> <span style="color: #000000;">.</span> <span style="color: #0000ff;">"</span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;"> title=</span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;">"</span> <span style="color: #000000;">.</span> <span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">post_title</span> <span style="color: #000000;">.</span> <span style="color: #0000ff;">" 上的评论</span><span style="color: #0000ff;">\"</span><span style="color: #0000ff;">&gt;"</span><span style="color: #000000;">.</span> <span style="color: #000000;">strip_tags</span>(<span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">comment_author</span>) <span style="color: #000000;">.</span><span style="color: #0000ff;">"： "</span><span style="color: #000000;">.</span> <span style="color: #000000;">strip_tags</span>(<span style="color: #000000;">$comment</span><span style="color: #000000;">-&gt;</span><span style="color: #ff0000;">com_excerpt</span>) <span style="color: #000000;">.</span><span style="color: #0000ff;">"&lt;/a&gt;&lt;/li&gt;"</span>;<br />
<span style="color: #000000;">}</span><br />
<span style="color: #000000;">$output</span> <span style="color: #000000;">.=</span> <span style="color: #000000;">$post_HTML</span>;<br />
<span style="color: #000000;">$output</span> <span style="color: #000000;">=</span> <span style="color: #000000;">convert_smilies</span>(<span style="color: #000000;">$output</span>);<br />
<span style="color: #000080; font-weight: bold;">echo</span> <span style="color: #000000;">$output</span>;<br />
<span style="color: #008080;">?&gt;</span></div>
<p>说明一下：代码中的“万戈”换成各自的名字就行，只是为了<a href="http://wange.im/hide-recent-author-comment-in-wordpress.html">隐藏博主的最新留言</a>，还有 <a title="Wordpress 2.7+主题 gravatar 头像缓存" href="http://wange.im/cache-gravatar-for-wordpress-2-7.html">gravatar 头像缓存</a>的路径就根据各自的实际情况啦。</p>
<p>在完善 WordPress 带头像的最新评论的时候，最折腾我的就是样式，让我够累的，照顾了 Firefox，又忽略了 IE，特别是难缠的 IE6，我也是无能为力了，就先这么着吧，有时间再修改。</p>
<div id="rl_posts">    <div id="rl_posts_hd" class="box_hd">        <span id="rl_posts_title" class="box_title">与 <h2 itemprop="keywords"><a href="http://wange.im/tag/gravatar/" title="gravatar" rel="tag">gravatar</a>,<a href="http://wange.im/tag/wordpress/" title="WordPress" rel="tag">WordPress</a>,<a href="http://wange.im/tag/sidebar/" title="侧边栏" rel="tag">侧边栏</a>,<a href="http://wange.im/tag/leave-word/" title="留言" rel="tag">留言</a>,<a href="http://wange.im/tag/cache/" title="缓存" rel="tag">缓存</a></h2> 相关的文章        </span>    </div>    <div id="rl_posts_bd">        <ul class="clearfix"><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/timthumb.php?src=http://wange.im/cache/commenter-avatar.jpg&amp;h=45&amp;w=45&amp;zc=1" alt="Wordpress 记录评论者 gravatar 头像" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/commenter-gravatar-in-wordpress.html" rel="bookmark" title="Wordpress 记录评论者 gravatar 头像">Wordpress 记录评论者 gravatar 头像</a>        <div class="rl_date">2010年05月18日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/qq-gravatar-cache.html" rel="bookmark" title="QQ 自定义头像+Gravatar 头像缓存">QQ 自定义头像+Gravatar 头像缓存</a>        <div class="rl_date">2010年04月6日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/gravatar-buffer-supplement-in-wordpress.html" rel="bookmark" title="Wordpress gravatar 头像缓存补充说明">Wordpress gravatar 头像缓存补充说明</a>        <div class="rl_date">2010年01月19日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/recent-comments-in-wordpress.html" rel="bookmark" title="求解 Wordpress 最新评论无法定位问题">求解 Wordpress 最新评论无法定位问题</a>        <div class="rl_date">2009年12月14日</div>    </div></li>        </ul>    </div></div>]]></content:encoded>
			<wfw:commentRss>http://wange.im/recent-comment-with-avatar-in-wordpress.html/feed</wfw:commentRss>
		<slash:comments>137</slash:comments>
		</item>
		<item>
		<title>WordPress 免插件读者墙修订版</title>
		<link>http://wange.im/readerwall-revision-for-wordpress.html</link>
		<comments>http://wange.im/readerwall-revision-for-wordpress.html#comments</comments>
		<pubDate>Tue, 01 Dec 2009 12:16:29 +0000</pubDate>
		<dc:creator>万戈</dc:creator>
				<category><![CDATA[电脑网络]]></category>
		<category><![CDATA[gravatar]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[缓存]]></category>
		<category><![CDATA[读者墙]]></category>

		<guid isPermaLink="false">http://wange.im/?p=2251</guid>
		<description><![CDATA[这篇文章是建立在《Wordpress 免插件版侧边栏读者墙》的基础之上的，相比较之前的读者墙，今天修改的版本只是针对 IE 浏览器下的显示。文字表达能力太差，还是上图吧，请看右图，当鼠标移动到侧边栏的读者墙上时，在 Firefox 浏览器下会显示提示某某童鞋盖楼的层数，而在 IE 下就只有盖楼排行，而没有弹出文字提示。此次修改的目标，就是将 IE 下的文字提示也整出来。看的懂我在说啥的童鞋可以继续看下去，已经被我说糊涂的童鞋也请麻烦灌个水再闪。 其实要在 IE 下加图片提示并不难，Firefox 下是加 title，而在 IE 下就是加 alt，这个我早就知道，但是放在 PHP 代码中调来调去，看的就有些眼晕，以至于今天才搞定。过程中还要感谢张三童鞋倾情提供 WordPress-reader-wall 插件让我参考，终于在苦思冥想后十分钟得出答案。 WordPress 主题下 functions.php 和 style.css 中需要添加的代码和《Wordpress 免插件版侧边栏读者墙》中的一样，这里就不重复了，唯一不同的就是在 sidebar.php 中调用函数的部分。 原版，也就是上一版的免插件读者墙中 sidebar.php 的引用部分如下： &#60;ul class="ffox_most_active"&#62; &#60;?php if ( $counts ) : foreach ($counts as $count) : echo  '&#60;li&#62;' . '&#60;a href="'. $count-&#62;comment_author_url . '" [...]]]></description>
			<content:encoded><![CDATA[<p>这篇文章是建立在<a title="Wordpress 免插件版侧边栏读者墙" href="http://wange.im/readerwall-on-sidebar-without-plugins.html">《Wordpress 免插件版侧边栏读者墙》</a>的基础之上的，相比较之前的读者墙，今天修改的版本只是针对 IE 浏览器下的显示。<img style="float:right;" src="http://wqwuia.bay.livefilestore.com/y1prRMQFbmXQTgsWS25sUYru8Npl-Y-HT7a0taMLOwypmxv5INo_90PL2DLsG4i5zpxbN7Qfo07WjdckYoQz8PeBcwN93lKOKj8/readerswall.jpg" alt="" />文字表达能力太差，还是上图吧，请看右图，当鼠标移动到侧边栏的读者墙上时，在 Firefox 浏览器下会显示提示某某童鞋盖楼的层数，而在 IE 下就只有盖楼排行，而没有弹出文字提示。此次修改的目标，就是将 IE 下的文字提示也整出来。看的懂我在说啥的童鞋可以继续看下去，已经被我说糊涂的童鞋也请麻烦灌个水再闪。</p>
<p>其实要在 IE 下加图片提示并不难，Firefox 下是加 title，而在 IE 下就是加 alt，这个我早就知道，但是放在 PHP 代码中调来调去，看的就有些眼晕，以至于今天才搞定。过程中还要感谢<a title="張三'blog" rel="external nofollow" href="http://zhang3.net/" target="_blank">张三</a>童鞋倾情提供 WordPress-reader-wall 插件让我参考，终于在苦思冥想后十分钟得出答案。</p>
<p>WordPress 主题下 functions.php 和 style.css 中需要添加的代码和<a title="Wordpress 免插件版侧边栏读者墙" href="http://wange.im/readerwall-on-sidebar-without-plugins.html">《Wordpress 免插件版侧边栏读者墙》</a>中的一样，这里就不重复了，唯一不同的就是在 sidebar.php 中调用函数的部分。</p>
<p>原版，也就是上一版的免插件读者墙中 sidebar.php 的引用部分如下：</p>
<div class="source">
<div style="FONT-FAMILY: 'Courier New','Lucida Console','monospace'; COLOR: #000000"><span style="COLOR: #000080; FONT-WEIGHT: bold">&lt;ul</span> <span style="COLOR: #ff0000">class=</span><span style="COLOR: #0000ff">"ffox_most_active"</span><span style="COLOR: #000080; FONT-WEIGHT: bold">&gt;</span><br />
<span style="COLOR: #008080">&lt;?php</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">if</span> ( <span style="COLOR: #000000">$counts</span> ) <span style="COLOR: #000000">:</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">foreach</span> (<span style="COLOR: #000000">$counts</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">as</span> <span style="COLOR: #000000">$count</span>) <span style="COLOR: #000000">:</span><br />
<span style="COLOR: #000080; FONT-WEIGHT: bold">echo</span>  <span style="COLOR: #0000ff">'&lt;li&gt;'</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">'&lt;a href="'</span><span style="COLOR: #000000">.</span> <span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">comment_author_url</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">'" target="_blank" title="'</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">comment_author</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">' ('</span><span style="COLOR: #000000">.</span> <span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">cnt</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">'层楼)"&gt;'</span> <span style="COLOR: #000000">.</span><span style="COLOR: #000000">get_avatar</span>(<span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">comment_author_email</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">32</span>)<span style="COLOR: #000000">.</span><span style="COLOR: #0000ff">'&lt;/a&gt;&lt;/li&gt;'</span>;<br />
<span style="COLOR: #000080; FONT-WEIGHT: bold">endforeach</span>; <span style="COLOR: #000080; FONT-WEIGHT: bold">endif</span>;<br />
<span style="COLOR: #008080">?&gt;</span><br />
<span style="COLOR: #000080; FONT-WEIGHT: bold">&lt;/ul&gt;</span></div>
</div>
<p>本文的重点来了，下面是修订版的通用版，只要用下面这段代码代替上面在 sidebar.php 中相同的部分就可以了：</p>
<div class="source">
<div style="FONT-FAMILY: 'Courier New','Lucida Console','monospace'; COLOR: #000000"><span style="COLOR: #000080; FONT-WEIGHT: bold">&lt;ul</span> <span style="COLOR: #ff0000">class=</span><span style="COLOR: #0000ff">"ffox_most_active"</span><span style="COLOR: #000080; FONT-WEIGHT: bold">&gt;</span><br />
<span style="COLOR: #008080">&lt;?php</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">if</span> ( <span style="COLOR: #000000">$counts</span> ) <span style="COLOR: #000000">:</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">foreach</span> (<span style="COLOR: #000000">$counts</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">as</span> <span style="COLOR: #000000">$count</span>) <span style="COLOR: #000000">:</span><br />
<span style="COLOR: #000080; FONT-WEIGHT: bold">echo</span>  <span style="COLOR: #0000ff">'&lt;li&gt;'</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">'&lt;a href="'</span><span style="COLOR: #000000">.</span> <span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">comment_author_url</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">'" target="_blank" title="'</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">comment_author</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">' ('</span><span style="COLOR: #000000">.</span> <span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">cnt</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">'层楼)"&gt;&lt;img src="http://www.gravatar.com/avatar.php?gravatar_id='</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">md5</span>(<span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">comment_author_email</span>)<span style="COLOR: #000000">.</span><span style="COLOR: #0000ff">'&amp;size=32&amp;d=identicon&amp;r=G" alt="'</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">comment_author</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">' ('</span><span style="COLOR: #000000">.</span> <span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">cnt</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">'层楼)" /&gt;&lt;/a&gt;&lt;/li&gt;'</span>;<br />
<span style="COLOR: #000080; FONT-WEIGHT: bold">endforeach</span>; <span style="COLOR: #000080; FONT-WEIGHT: bold">endif</span>;<br />
<span style="COLOR: #008080">?&gt;</span><br />
<span style="COLOR: #000080; FONT-WEIGHT: bold">&lt;/ul&gt;</span></div>
</div>
<p>至此，Wordpress 免插件读者墙修订版就完成了，在 IE 浏览器下就同样可以显示出文字提示了。不过，既然上面那个是修订版的通用版，那就肯定有不同凡响的 VIP 版啦。VIP 版正是本人现在正在使用的，实现侧边栏读者墙的头像缓存。前提准备工作请见<a title="缓存 Gravatar 头像至本地服务器" href="http://wange.im/cache-gravatar.html">《缓存 Gravatar 头像至本地服务器》</a>，一切准备就绪后，将以下代码代替 sidebar.php 中相同的部分也就可以了：</p>
<div class="source">
<div style="FONT-FAMILY: 'Courier New','Lucida Console','monospace'; COLOR: #000000"><span style="COLOR: #000080; FONT-WEIGHT: bold">&lt;ul</span> <span style="COLOR: #ff0000">class=</span><span style="COLOR: #0000ff">"ffox_most_active"</span><span style="COLOR: #000080; FONT-WEIGHT: bold">&gt;</span><br />
<span style="COLOR: #008080">&lt;?php</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">if</span> ( <span style="COLOR: #000000">$counts</span> ) <span style="COLOR: #000000">:</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">foreach</span> (<span style="COLOR: #000000">$counts</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">as</span> <span style="COLOR: #000000">$count</span>) <span style="COLOR: #000000">:</span><br />
<span style="COLOR: #000080; FONT-WEIGHT: bold">echo</span>  <span style="COLOR: #0000ff">'&lt;li&gt;'</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">'&lt;a href="'</span><span style="COLOR: #000000">.</span> <span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">comment_author_url</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">'" target="_blank" title="'</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">comment_author</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">' ('</span><span style="COLOR: #000000">.</span> <span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">cnt</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">'层楼)"&gt;&lt;img src="/gravatar/cache/avatar/'</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">md5</span>(<span style="COLOR: #000000">strtolower</span>(<span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">comment_author_email</span>))<span style="COLOR: #000000">.</span><span style="COLOR: #0000ff">'" alt="'</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">comment_author</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">' ('</span><span style="COLOR: #000000">.</span> <span style="COLOR: #000000">$count</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #ff0000">cnt</span> <span style="COLOR: #000000">.</span> <span style="COLOR: #0000ff">'层楼)" /&gt;&lt;/a&gt;&lt;/li&gt;'</span>;<br />
<span style="COLOR: #000080; FONT-WEIGHT: bold">endforeach</span>; <span style="COLOR: #000080; FONT-WEIGHT: bold">endif</span>;<br />
<span style="COLOR: #008080">?&gt;</span><br />
<span style="COLOR: #000080; FONT-WEIGHT: bold">&lt;/ul&gt;</span></div>
</div>
<p>WordPress 免插件读者墙修订版完美诞生。最后，感谢能坚持看完的童鞋，也感谢没能看完但依然盖楼的童鞋，更感谢坚持看完又疯狂盖楼的童鞋。</p>
<div id="rl_posts">    <div id="rl_posts_hd" class="box_hd">        <span id="rl_posts_title" class="box_title">与 <h2 itemprop="keywords"><a href="http://wange.im/tag/gravatar/" title="gravatar" rel="tag">gravatar</a>,<a href="http://wange.im/tag/ie/" title="IE" rel="tag">IE</a>,<a href="http://wange.im/tag/wordpress/" title="WordPress" rel="tag">WordPress</a>,<a href="http://wange.im/tag/browser/" title="浏览器" rel="tag">浏览器</a>,<a href="http://wange.im/tag/cache/" title="缓存" rel="tag">缓存</a>,<a href="http://wange.im/tag/readerwall/" title="读者墙" rel="tag">读者墙</a></h2> 相关的文章        </span>    </div>    <div id="rl_posts_bd">        <ul class="clearfix"><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/qq-gravatar-cache.html" rel="bookmark" title="QQ 自定义头像+Gravatar 头像缓存">QQ 自定义头像+Gravatar 头像缓存</a>        <div class="rl_date">2010年04月6日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/gravatar-buffer-supplement-in-wordpress.html" rel="bookmark" title="Wordpress gravatar 头像缓存补充说明">Wordpress gravatar 头像缓存补充说明</a>        <div class="rl_date">2010年01月19日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/recent-comment-with-avatar-in-wordpress.html" rel="bookmark" title="Wordpress 侧边栏带头像的最新评论">Wordpress 侧边栏带头像的最新评论</a>        <div class="rl_date">2009年12月26日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/cache-gravatar-for-wordpress-2-7.html" rel="bookmark" title="Wordpress 2.7+主题 gravatar 头像缓存">Wordpress 2.7+主题 gravatar 头像缓存</a>        <div class="rl_date">2009年11月13日</div>    </div></li>        </ul>    </div></div>]]></content:encoded>
			<wfw:commentRss>http://wange.im/readerwall-revision-for-wordpress.html/feed</wfw:commentRss>
		<slash:comments>167</slash:comments>
		</item>
		<item>
		<title>WordPress 2.7+主题 gravatar 头像缓存</title>
		<link>http://wange.im/cache-gravatar-for-wordpress-2-7.html</link>
		<comments>http://wange.im/cache-gravatar-for-wordpress-2-7.html#comments</comments>
		<pubDate>Fri, 13 Nov 2009 12:13:30 +0000</pubDate>
		<dc:creator>万戈</dc:creator>
				<category><![CDATA[电脑网络]]></category>
		<category><![CDATA[转来载去]]></category>
		<category><![CDATA[gravatar]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[本地]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://wange.im/?p=2107</guid>
		<description><![CDATA[之前就给用 WordPress 的朋友介绍过缓存 Gravatar 头像至本地服务器的方法，但是我当时介绍的方法仅适用于 WordPress 2.7 之前的主题，不过貌似 WordPress 2.7+ 以后，被引进了 wp_list_comments 这一函数（具体啥时候被 WordPress 小组引进的我没有仔细研究过～），以前的头像缓存到本地的方法就不再适用了。我也一直没有注意这个问题，直到我自己把林子的 D&#38;Z 主题升级到支持 wp_list_comments 后才发现这个问题，然后就急于寻求新的 Gravatar 头像缓存的方法。 首先找到了兽兽的方法，看是看懂了，不过折腾了半天没折腾成功，郁闷，悟性高的童鞋可以看下：http://zou.lu/change-hosting-and-cache-gravatar/ 后来又找到了荒野无灯的方法，这家伙和Willin大师一样，超D调的，现在我明白了，真正的牛人都是不坑声的，崇拜一下。传送门：http://www.hacklog.cn/wordpress/wpskills/cache-gravatar-and-speed-up-your-blog.html 其实 Gravatar 头像缓存的前五步和《缓存 Gravatar 头像至本地服务器》中提到的方法是一样的，我重新整理了一下，comments.php 里用 wp_list_comments 函数的同学缓存头像方法如下： 1、去作者主页下载该组件，解包，上传。路径随意，我放在 /gravatar 目录下。 2、gravatar 目录内应该有两个文件夹: cache 和 profile；三个文件: index.php, .htaccess, mysql.sql 3、赋予 cache 文件夹 755 权限: chmod a+w 。 4、本地新建一个 php 文件，写入以下内容，文件名 avatar.php，上传至 profile [...]]]></description>
			<content:encoded><![CDATA[<p>之前就给用 WordPress 的朋友介绍过<a title="缓存 Gravatar 头像至本地服务器" href="http://wange.im/cache-gravatar.html">缓存 Gravatar 头像至本地服务器</a>的方法，但是我当时介绍的方法仅适用于 WordPress 2.7 之前的主题，不过貌似 WordPress 2.7+ 以后，被引进了 wp_list_comments 这一函数（具体啥时候被 WordPress 小组引进的我没有仔细研究过～），以前的头像缓存到本地的方法就不再适用了。我也一直没有注意这个问题，直到我自己把林子的 D&amp;Z 主题升级到支持 wp_list_comments 后才发现这个问题，然后就急于寻求新的 Gravatar 头像缓存的方法。</p>
<p>首先找到了兽兽的方法，看是看懂了，不过折腾了半天没折腾成功，郁闷，悟性高的童鞋可以看下：<a title="提速之 Gravatar 头像缓存" rel="external nofollow" href="http://zou.lu/change-hosting-and-cache-gravatar/" target="_blank">http://zou.lu/change-hosting-and-cache-gravatar/</a></p>
<p>后来又找到了荒野无灯的方法，这家伙和Willin大师一样，超D调的，现在我明白了，真正的牛人都是不坑声的，崇拜一下。传送门：<a title="缓存Gravatar 头像，博客再次提速" rel="external nofollow" href="http://www.hacklog.cn/wordpress/wpskills/cache-gravatar-and-speed-up-your-blog.html" target="_blank">http://www.hacklog.cn/wordpress/wpskills/cache-gravatar-and-speed-up-your-blog.html</a></p>
<p>其实 Gravatar 头像缓存的前五步和<a title="缓存 Gravatar 头像至本地服务器" href="http://wange.im/cache-gravatar.html">《缓存 Gravatar 头像至本地服务器》</a>中提到的方法是一样的，我重新整理了一下，comments.php 里用 wp_list_comments 函数的同学缓存头像方法如下：</p>
<p>1、去<a title="Generic Gravatar Cache" rel="external nofollow" href="http://scott.yang.id.au/code/gravatar-cache/" target="_blank">作者主页</a>下载该组件，解包，上传。路径随意，我放在 /gravatar 目录下。</p>
<p>2、gravatar 目录内应该有两个文件夹: cache 和 profile；三个文件: index.php, .htaccess, mysql.sql</p>
<p>3、赋予 cache 文件夹 755 权限: chmod a+w 。</p>
<p>4、本地新建一个 php 文件，写入以下内容，文件名 avatar.php，上传至 profile 文件夹内。请自行更改相应内容符合自己的需求。切记要放置默认头像。</p>
<div class="source">
<div style="FONT-FAMILY: 'Courier New','Lucida Console','monospace'; COLOR: #000000"><span style="COLOR: #008080">&lt;?php</span><br />
<span style="COLOR: #000000">$config</span><span style="COLOR: #000000">[</span><span style="COLOR: #0000ff">'default'</span><span style="COLOR: #000000">]</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">'http://domain.com/default-gravatar.png'</span>;<span style="FONT-STYLE: italic; COLOR: #008800">//无头像时返回的默认头像路径</span><br />
<span style="COLOR: #000000">$config</span><span style="COLOR: #000000">[</span><span style="COLOR: #0000ff">'rating'</span><span style="COLOR: #000000">]</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">'PG'</span>;<span style="FONT-STYLE: italic; COLOR: #008800">//gravatar的内容级别</span><br />
<span style="COLOR: #000000">$config</span><span style="COLOR: #000000">[</span><span style="COLOR: #0000ff">'size'</span><span style="COLOR: #000000">]</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">64</span>;<span style="FONT-STYLE: italic; COLOR: #008800">//头像尺寸</span><br />
<span style="COLOR: #008080">?&gt;</span></div>
</div>
<p>5、编辑 .htaccess 文件，默认 RewriteRule . index.php [L] ，请依照你的实际放置目录修改，比如我的是 RewriteRule . /gravatar/index.php [L]</p>
<p>6、修改 wp-includes/pluggable.php：</p>
<p>大概在1523行处有一个</p>
<div class="source">
<div style="FONT-FAMILY: 'Courier New','Lucida Console','monospace'; COLOR: #000000"><span style="COLOR: #000080; FONT-WEIGHT: bold">if</span> ( <span style="COLOR: #000000">!</span><span style="COLOR: #000000">function_exists</span>( <span style="COLOR: #0000ff">'get_avatar'</span> ) ) <span style="COLOR: #000000">:</span><br />
<span style="FONT-STYLE: italic; COLOR: #008800">/**</span><br />
<span style="FONT-STYLE: italic; COLOR: #008800">* Retrieve the avatar for a user who provided a user ID or email address.</span><br />
<span style="FONT-STYLE: italic; COLOR: #008800">*</span><br />
<span style="FONT-STYLE: italic; COLOR: #008800">* @since 2.5</span><br />
<span style="FONT-STYLE: italic; COLOR: #008800">* @param int|string|object $id_or_email A user ID,  email address, or comment object</span><br />
<span style="FONT-STYLE: italic; COLOR: #008800">* @param int $size Size of the avatar image</span><br />
<span style="FONT-STYLE: italic; COLOR: #008800">* @param string $default URL to a default image to use if no avatar is available</span><br />
<span style="FONT-STYLE: italic; COLOR: #008800">* @param string $alt Alternate text to use in image tag. Defaults to blank</span><br />
<span style="FONT-STYLE: italic; COLOR: #008800">* @return string &lt;img&gt; tag for the user's avatar</span><br />
<span style="FONT-STYLE: italic; COLOR: #008800">*/</span><br />
<span style="COLOR: #000080; FONT-WEIGHT: bold">function</span> <span style="COLOR: #000000">get_avatar</span>( <span style="COLOR: #000000">$id_or_email</span><span style="COLOR: #000000">,</span> <span style="COLOR: #000000">$size</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">'96'</span><span style="COLOR: #000000">,</span> <span style="COLOR: #000000">$default</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">''</span><span style="COLOR: #000000">,</span> <span style="COLOR: #000000">$alt</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">false</span> ) <span style="COLOR: #000000">{</span><br />
    <span style="COLOR: #000080; FONT-WEIGHT: bold">if</span> ( <span style="COLOR: #000000">!</span> <span style="COLOR: #000000">get_option</span>(<span style="COLOR: #0000ff">'show_avatars'</span>) )<br />
        <span style="COLOR: #000080; FONT-WEIGHT: bold">return</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">false</span>;</p>
<p>    <span style="COLOR: #000080; FONT-WEIGHT: bold">if</span> ( <span style="COLOR: #000080; FONT-WEIGHT: bold">false</span> <span style="COLOR: #000000">===</span> <span style="COLOR: #000000">$alt</span>)<br />
        <span style="COLOR: #000000">$safe_alt</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">''</span>;<br />
    <span style="COLOR: #000080; FONT-WEIGHT: bold">else</span><br />
        <span style="COLOR: #000000">$safe_alt</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">esc_attr</span>( <span style="COLOR: #000000">$alt</span> );</p>
<p>    <span style="COLOR: #000080; FONT-WEIGHT: bold">if</span> ( <span style="COLOR: #000000">!</span><span style="COLOR: #000000">is_numeric</span>(<span style="COLOR: #000000">$size</span>) )<br />
        <span style="COLOR: #000000">$size</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">'96'</span>;</p>
<p>    <span style="COLOR: #000000">$email</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">''</span>;<br />
    <span style="COLOR: #000080; FONT-WEIGHT: bold">if</span> ( <span style="COLOR: #000000">is_numeric</span>(<span style="COLOR: #000000">$id_or_email</span>) ) <span style="COLOR: #000000">{</span><br />
        <span style="COLOR: #000000">$id</span> <span style="COLOR: #000000">=</span> (<span style="COLOR: #000000">int</span>) <span style="COLOR: #000000">$id_or_email</span>;<br />
        <span style="COLOR: #000000">$user</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">get_userdata</span>(<span style="COLOR: #000000">$id</span>);<br />
        <span style="COLOR: #000080; FONT-WEIGHT: bold">if</span> ( <span style="COLOR: #000000">$user</span> )<br />
            <span style="COLOR: #000000">$email</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">$user</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">user_email</span>;<br />
    <span style="COLOR: #000000">}</span> <span style="COLOR: #000000">elseif</span> ( <span style="COLOR: #000000">is_object</span>(<span style="COLOR: #000000">$id_or_email</span>) ) <span style="COLOR: #000000">{</span><br />
        <span style="COLOR: #000080; FONT-WEIGHT: bold">if</span> ( <span style="COLOR: #000000">isset</span>(<span style="COLOR: #000000">$id_or_email</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">comment_type</span>) <span style="COLOR: #000000">&amp;&amp;</span> <span style="COLOR: #0000ff">''</span> <span style="COLOR: #000000">!=</span> <span style="COLOR: #000000">$id_or_email</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">comment_type</span> <span style="COLOR: #000000">&amp;&amp;</span> <span style="COLOR: #0000ff">'comment'</span> <span style="COLOR: #000000">!=</span> <span style="COLOR: #000000">$id_or_email</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">comment_type</span> )<br />
            <span style="COLOR: #000080; FONT-WEIGHT: bold">return</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">false</span>; <span style="FONT-STYLE: italic; COLOR: #008800">// No avatar for pingbacks or trackbacks</span></p>
<p>        <span style="COLOR: #000080; FONT-WEIGHT: bold">if</span> ( <span style="COLOR: #000000">!</span><span style="COLOR: #000000">empty</span>(<span style="COLOR: #000000">$id_or_email</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">user_id</span>) ) <span style="COLOR: #000000">{</span><br />
            <span style="COLOR: #000000">$id</span> <span style="COLOR: #000000">=</span> (<span style="COLOR: #000000">int</span>) <span style="COLOR: #000000">$id_or_email</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">user_id</span>;<br />
            <span style="COLOR: #000000">$user</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">get_userdata</span>(<span style="COLOR: #000000">$id</span>);<br />
            <span style="COLOR: #000080; FONT-WEIGHT: bold">if</span> ( <span style="COLOR: #000000">$user</span>)<br />
                <span style="COLOR: #000000">$email</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">$user</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">user_email</span>;<br />
        <span style="COLOR: #000000">}</span> <span style="COLOR: #000000">elseif</span> ( <span style="COLOR: #000000">!</span><span style="COLOR: #000000">empty</span>(<span style="COLOR: #000000">$id_or_email</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">comment_author_email</span>) ) <span style="COLOR: #000000">{</span><br />
            <span style="COLOR: #000000">$email</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">$id_or_email</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">comment_author_email</span>;<br />
        <span style="COLOR: #000000">}</span><br />
    <span style="COLOR: #000000">}</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">else</span> <span style="COLOR: #000000">{</span><br />
        <span style="COLOR: #000000">$email</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">$id_or_email</span>;<br />
    <span style="COLOR: #000000">}</span></p>
<p>  <br />
        <span style="COLOR: #000000">$host</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">'http://www.yourdomain.cn'</span>;  <span style="FONT-STYLE: italic; COLOR: #008800">//注意这里要修改为你的博客的地址</span></p>
<p>    <span style="COLOR: #000080; FONT-WEIGHT: bold">if</span> ( <span style="COLOR: #000000">!</span><span style="COLOR: #000000">empty</span>(<span style="COLOR: #000000">$email</span>) ) <span style="COLOR: #000000">{</span><br />
        <span style="COLOR: #000000">$out</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">"$host/gravatar/cache/avatar/"</span>;<br />
        <span style="COLOR: #000000">$out</span> <span style="COLOR: #000000">.</span><span style="COLOR: #000000">=</span> <span style="COLOR: #000000">md5</span>( <span style="COLOR: #000000">strtolower</span>( <span style="COLOR: #000000">$email</span> ) );<br />
      <br />
        <span style="COLOR: #000000">$avatar</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">"&lt;img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' /&gt;"</span>;<br />
    <span style="COLOR: #000000">}</span> <span style="COLOR: #000080; FONT-WEIGHT: bold">else</span> <span style="COLOR: #000000">{</span><br />
        <span style="COLOR: #000000">$avatar</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #0000ff">"&lt;img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' /&gt;"</span>;<br />
    <span style="COLOR: #000000">}</span></p>
<p>    <span style="COLOR: #000080; FONT-WEIGHT: bold">return</span> <span style="COLOR: #000000">apply_filters</span>(<span style="COLOR: #0000ff">'get_avatar'</span><span style="COLOR: #000000">,</span> <span style="COLOR: #000000">$avatar</span><span style="COLOR: #000000">,</span> <span style="COLOR: #000000">$id_or_email</span><span style="COLOR: #000000">,</span> <span style="COLOR: #000000">$size</span><span style="COLOR: #000000">,</span> <span style="COLOR: #000000">$default</span><span style="COLOR: #000000">,</span> <span style="COLOR: #000000">$alt</span>);<br />
<span style="COLOR: #000000">}</span><br />
<span style="COLOR: #000000">endif</span>;</div>
</div>
<p>OK，搞定，这篇文章已经被拉得老长了，不再啰索，收声～</p>
<div id="rl_posts">    <div id="rl_posts_hd" class="box_hd">        <span id="rl_posts_title" class="box_title">与 <h2 itemprop="keywords"><a href="http://wange.im/tag/gravatar/" title="gravatar" rel="tag">gravatar</a>,<a href="http://wange.im/tag/wordpress/" title="WordPress" rel="tag">WordPress</a>,<a href="http://wange.im/tag/localhost/" title="本地" rel="tag">本地</a>,<a href="http://wange.im/tag/cache/" title="缓存" rel="tag">缓存</a></h2> 相关的文章        </span>    </div>    <div id="rl_posts_bd">        <ul class="clearfix"><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/cache-gravatar.html" rel="bookmark" title="缓存 Gravatar 头像至本地服务器">缓存 Gravatar 头像至本地服务器</a>        <div class="rl_date">2009年09月2日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/qq-gravatar-cache.html" rel="bookmark" title="QQ 自定义头像+Gravatar 头像缓存">QQ 自定义头像+Gravatar 头像缓存</a>        <div class="rl_date">2010年04月6日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/gravatar-buffer-supplement-in-wordpress.html" rel="bookmark" title="Wordpress gravatar 头像缓存补充说明">Wordpress gravatar 头像缓存补充说明</a>        <div class="rl_date">2010年01月19日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/recent-comment-with-avatar-in-wordpress.html" rel="bookmark" title="Wordpress 侧边栏带头像的最新评论">Wordpress 侧边栏带头像的最新评论</a>        <div class="rl_date">2009年12月26日</div>    </div></li>        </ul>    </div></div>]]></content:encoded>
			<wfw:commentRss>http://wange.im/cache-gravatar-for-wordpress-2-7.html/feed</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>网页快照是与非</title>
		<link>http://wange.im/y-or-n-for-snapshot.html</link>
		<comments>http://wange.im/y-or-n-for-snapshot.html#comments</comments>
		<pubDate>Thu, 01 Oct 2009 14:13:34 +0000</pubDate>
		<dc:creator>万戈</dc:creator>
				<category><![CDATA[三言两语]]></category>
		<category><![CDATA[搜索]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://wange.im/?p=1880</guid>
		<description><![CDATA[正方观点：网页快照好！ 反方观点：网页快照不好！ 辩题来源：由于前些日子写的××罢工事件，引来一片搜索和人肉，管理部找我问过话了，还有同行在我这里留言了，我实在受不了这一波波的人肉搜索，所以关于××事件，我不想再提了。我的原则是：D调做人，高调做事，对于暴露于搜索引擎之下的敏感文章，我不得不将之前写的有关××事件的文章都设为了私有。可是问题来了，设为私有后，从搜索引擎的网页快照功能依然可以看到其内容。 作为互联网访客而言，网页快照功能固然是好，可以查看历史更新，甚至是已经被删除或者被隐藏的帖了。 可同样作为搜索引擎的用户，站长朋友们，当然希望访客能看到最新的网站动态，而不是已经被抹去的网页历史。 各大搜索引擎都有网页快照功能，说白了，这就是将成千上万的网页缓存起来放在服务器上供访客浏览。我们不得不承认网页快照有时候给我们带来了很大的便利，但是如今站在站长的角度看网页快照，我希望它能更人性化一些，比如说将网页更新缓存的权利交给各位站长，这也就能免去了像我这样把文章设为私有后还不能完全私有的尴尬。 作为搜索引擎用户的你，是认同正方的观点还是反方的观点呢？ 与 搜索,缓存 相关的文章 给 WordPress 添加语音搜索功能 2011年12月4日 Wordpress 自动生成并缓存网页缩略图 2010年10月2日 Wordpress 向来自其他域的访客致欢迎词 2010年07月30日 Wordpress 站内搜索高亮显示关键词 2010年07月18日]]></description>
			<content:encoded><![CDATA[<p>正方观点：网页快照好！</p>
<p>反方观点：网页快照不好！</p>
<p>辩题来源：由于前些日子写的××罢工事件，引来一片搜索和人肉，管理部找我问过话了，还有同行在我这里留言了，我实在受不了这一波波的人肉搜索，所以关于××事件，我不想再提了。我的原则是：D调做人，高调做事，对于暴露于搜索引擎之下的敏感文章，我不得不将之前写的有关××事件的文章都设为了私有。可是问题来了，设为私有后，从搜索引擎的网页快照功能依然可以看到其内容。</p>
<p>作为互联网访客而言，网页快照功能固然是好，可以查看历史更新，甚至是已经被删除或者被隐藏的帖了。</p>
<p>可同样作为搜索引擎的用户，站长朋友们，当然希望访客能看到最新的网站动态，而不是已经被抹去的网页历史。</p>
<p>各大搜索引擎都有网页快照功能，说白了，这就是将成千上万的网页缓存起来放在服务器上供访客浏览。我们不得不承认网页快照有时候给我们带来了很大的便利，但是如今站在站长的角度看网页快照，我希望它能更人性化一些，比如说将网页更新缓存的权利交给各位站长，这也就能免去了像我这样把文章设为私有后还不能完全私有的尴尬。</p>
<p>作为搜索引擎用户的你，是认同正方的观点还是反方的观点呢？</p>
<div id="rl_posts">    <div id="rl_posts_hd" class="box_hd">        <span id="rl_posts_title" class="box_title">与 <h2 itemprop="keywords"><a href="http://wange.im/tag/search/" title="搜索" rel="tag">搜索</a>,<a href="http://wange.im/tag/cache/" title="缓存" rel="tag">缓存</a></h2> 相关的文章        </span>    </div>    <div id="rl_posts_bd">        <ul class="clearfix"><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/timthumb.php?src=http://wange.im/cache/speech.jpg&amp;h=45&amp;w=45&amp;zc=1" alt="给 WordPress 添加语音搜索功能" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/x-webkit-speech-in-wordpress.html" rel="bookmark" title="给 WordPress 添加语音搜索功能">给 WordPress 添加语音搜索功能</a>        <div class="rl_date">2011年12月4日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/timthumb.php?src=http://wange.im/cache/stw_thumb.jpg&amp;h=45&amp;w=45&amp;zc=1" alt="Wordpress 自动生成并缓存网页缩略图" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/auto-thumbnail-and-cache-in-wordpress.html" rel="bookmark" title="Wordpress 自动生成并缓存网页缩略图">Wordpress 自动生成并缓存网页缩略图</a>        <div class="rl_date">2010年10月2日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/timthumb.php?src=http://wange.im/cache/twitter.jpg&amp;h=45&amp;w=45&amp;zc=1" alt="Wordpress 向来自其他域的访客致欢迎词" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/wordpress-say-hello-to-vistors.html" rel="bookmark" title="Wordpress 向来自其他域的访客致欢迎词">Wordpress 向来自其他域的访客致欢迎词</a>        <div class="rl_date">2010年07月30日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/timthumb.php?src=http://wange.im/cache/C3C8B704573706D9!566?filename=keyword-highlight.jpg&amp;h=45&amp;w=45&amp;zc=1" alt="Wordpress 站内搜索高亮显示关键词" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/highlight-keywords-in-wordpress-search.html" rel="bookmark" title="Wordpress 站内搜索高亮显示关键词">Wordpress 站内搜索高亮显示关键词</a>        <div class="rl_date">2010年07月18日</div>    </div></li>        </ul>    </div></div>]]></content:encoded>
			<wfw:commentRss>http://wange.im/y-or-n-for-snapshot.html/feed</wfw:commentRss>
		<slash:comments>97</slash:comments>
		</item>
		<item>
		<title>缓存 Gravatar 头像至本地服务器</title>
		<link>http://wange.im/cache-gravatar.html</link>
		<comments>http://wange.im/cache-gravatar.html#comments</comments>
		<pubDate>Wed, 02 Sep 2009 08:24:09 +0000</pubDate>
		<dc:creator>万戈</dc:creator>
				<category><![CDATA[电脑网络]]></category>
		<category><![CDATA[精品推荐]]></category>
		<category><![CDATA[转来载去]]></category>
		<category><![CDATA[gravatar]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[本地]]></category>
		<category><![CDATA[缓存]]></category>
		<category><![CDATA[静态化]]></category>

		<guid isPermaLink="false">http://wange.im/?p=1588</guid>
		<description><![CDATA[关于缓存 Gravatar 头像的方法我早就想拿出来说一说了，该方法来自 iShawn的博客。但是用了这个方法之后，我只能缓存一半的 Gravatar 头像，所有回复的评论者的头像都没有被缓存。这个问题一直困扰着我，让我抓狂了一个多月，终有一天，showfom 小盆友一语道破了天机，让我终于完整地实现了的 Gravatar 头像缓存，深表谢意。 Gravatar 头像缓存的好处我就不多说了，直接切入正题，缓存 Gravatar 头像至本地服务器。 1、去作者主页下载该组件，解包，上传。路径随意，我放在 /gravatar 目录下。 2、gravatar 目录内应该有两个文件夹: cache 和 profile；三个文件: index.php, .htaccess, mysql.sql 3、赋予 cache 文件夹 755 权限: chmod a+w 。 4、本地新建一个 php 文件，写入以下内容，文件名 avatar.php，上传至 profile 文件夹内。请自行更改相应内容符合自己的需求。切记要放置默认头像。 &#60;?php $config['default'] = 'http://domain.com/default-gravatar.png';//无头像时返回的默认头像路径 $config['rating'] = 'PG';//gravatar的内容级别 $config['size'] = 64;//头像尺寸 ?&#62; 5、编辑 .htaccess 文件，默认 RewriteRule . index.php [...]]]></description>
			<content:encoded><![CDATA[<p>关于缓存 Gravatar 头像的方法我早就想拿出来说一说了，该方法来自 iShawn的博客。但是用了这个方法之后，我只能缓存一半的 Gravatar 头像，所有回复的评论者的头像都没有被缓存。这个问题一直困扰着我，让我抓狂了一个多月，终有一天，<a title="Showfom's Blog" rel="external nofollow" href="http://showfom.com" target="_blank">showfom</a> 小盆友一语道破了天机，让我终于完整地实现了的 Gravatar 头像缓存，深表谢意。</p>
<p>Gravatar 头像缓存的好处我就不多说了，直接切入正题，缓存 Gravatar 头像至本地服务器。</p>
<p>1、去<a title="Generic Gravatar Cache" rel="external nofollow" href="http://scott.yang.id.au/code/gravatar-cache/" target="_blank">作者主页</a>下载该组件，解包，上传。路径随意，我放在 /gravatar 目录下。</p>
<p>2、gravatar 目录内应该有两个文件夹: cache 和 profile；三个文件: index.php, .htaccess, mysql.sql</p>
<p>3、赋予 cache 文件夹 755 权限: chmod a+w 。</p>
<p>4、本地新建一个 php 文件，写入以下内容，文件名 avatar.php，上传至 profile 文件夹内。请自行更改相应内容符合自己的需求。切记要放置默认头像。</p>
<p style="background-color: #404040; text-indent: 0pt; width: 500px; font-family: 'Lucida Console','Consolas','Courier New'; margin-left: 20px; font-size: 12px; padding: 10px;"><span style="COLOR: #e5786d">&lt;?php</span><br />
<span style="COLOR: #cae682">$config</span><span style="COLOR: #f6f3e8">[</span><span style="FONT-STYLE: italic; COLOR: #95e454">'default'</span><span style="COLOR: #f6f3e8">]</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #f6f3e8">=</span><span style="COLOR: #f6f3e8"> </span><span style="FONT-STYLE: italic; COLOR: #95e454">'http://domain.com/default-gravatar.png'</span><span style="COLOR: #f6f3e8">;</span><span style="FONT-STYLE: italic; COLOR: #99968b">//无头像时返回的默认头像路径</span><br />
<span style="COLOR: #cae682">$config</span><span style="COLOR: #f6f3e8">[</span><span style="FONT-STYLE: italic; COLOR: #95e454">'rating'</span><span style="COLOR: #f6f3e8">]</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #f6f3e8">=</span><span style="COLOR: #f6f3e8"> </span><span style="FONT-STYLE: italic; COLOR: #95e454">'PG'</span><span style="COLOR: #f6f3e8">;</span><span style="FONT-STYLE: italic; COLOR: #99968b">//gravatar的内容级别</span><br />
<span style="COLOR: #cae682">$config</span><span style="COLOR: #f6f3e8">[</span><span style="FONT-STYLE: italic; COLOR: #95e454">'size'</span><span style="COLOR: #f6f3e8">]</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #f6f3e8">=</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #e5786d">64</span><span style="COLOR: #f6f3e8">;</span><span style="FONT-STYLE: italic; COLOR: #99968b">//头像尺寸</span><br />
<span style="COLOR: #e5786d">?&gt;</span></p>
<p>5、编辑 .htaccess 文件，默认 RewriteRule . index.php [L] ，请依照你的实际放置目录修改，比如我的是 RewriteRule . /gravatar/index.php [L]</p>
<p>6、打开 WordPress 模板的 comments.php 文件，查找
</p>
<p style="background-color: #404040; text-indent: 0pt; width: 300px; font-family: 'Lucida Console','Consolas','Courier New'; margin-left: 20px; font-size: 12px; padding: 5px;"><span style="COLOR: #e5786d">&lt;?php</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #8ac6f2">echo</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #f6f3e8">get_avatar</span><span style="COLOR: #f6f3e8">(</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #cae682">$comment</span><span style="COLOR: #f6f3e8">,</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #e5786d">32</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #f6f3e8">);</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #e5786d">?&gt;</span></p>
<p>替换为</p>
<p style="background-color: #404040; text-indent: 0pt; width: 500px; font-family: 'Lucida Console','Consolas','Courier New'; margin-left: 20px; font-size: 12px; padding: 5px;"><span style="COLOR: #f6f3e8">&lt;img src="http://yourdomain/gravatar/cache/avatar/</span><span style="COLOR: #e5786d">&lt;?php</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #8ac6f2">echo</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #f6f3e8">md5</span><span style="COLOR: #f6f3e8">(</span><span style="COLOR: #f6f3e8">strtolower</span><span style="COLOR: #f6f3e8">(</span><span style="COLOR: #cae682">$comment</span><span style="COLOR: #f6f3e8">-&gt;</span><span style="COLOR: #cae682">comment_author_email</span><span style="COLOR: #f6f3e8">));</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #e5786d">?&gt;</span><span style="COLOR: #f6f3e8">" alt="" /&gt;</span></p>
<p>细心的同学应该会发现，路径中的 avatar 其实就是第四步创建的那个 php 文件的名字。你还可以创建不同的 Profile 应用在各个地方。</p>
<p>到此，Wordpress 缓存 Gravatar 至本地的操作便完成了，首次缓存的头像日后会被直接调用而无需再跑到 gravatar 查询。快就快在这里，省略查询的时间，静态化 Gravatar。</p>
<p>以上方法来自作者的原文：<a rel="external nofollow" href="http://ishawn.net/my-blog-related/cache-gravatar-into-local-server.html" target="_blank">《如何缓存 Gravatar 至本地服务器》</a>，不过很可惜，链接已经失效。不过没关系，如果觉得这还看不懂的话，showfom 小盆友写了篇更具体的：<a title="更换空间 + 再次提速之 Gravatar 头像缓存" rel="external nofollow" href="http://showfom.com/change-hosting-and-cache-gravatar/" target="_blank">http://showfom.com/change-hosting-and-cache-gravatar/</a>，很有参考价值。</p>
<p>如果做完以上步骤后发现 Gravatar 只缓存了一部分，那就有必要继续往下看了，因为你犯了一个和我一样的错误，也不能说错误，只能说疏忽。还要感谢 showfom 的提点，否则我要一直为这另一半的 Gravatar 缓存抓狂下去了。究其原因，是因为我没有用 WordPress 原生的嵌套评论，而是用 WordPress thread comment 插件代替的，问题就出在这个插件上，另一部分的头像输出是 WordPress thread comment 插件完成的，所以要解决这个问题就要进入 WordPress thread comment 插件的后台设置，找到“编辑评论的HTML”选项，将其中调用头像部分的代码也替换成：</p>
<p style="background-color: #404040; text-indent: 0pt; width: 500px; font-family: 'Lucida Console','Consolas','Courier New'; margin-left: 20px; font-size: 12px; padding: 5px;"><span style="COLOR: #f6f3e8">&lt;img src="http://yourdomain/gravatar/cache/avatar/</span><span style="COLOR: #e5786d">&lt;?php</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #8ac6f2">echo</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #f6f3e8">md5</span><span style="COLOR: #f6f3e8">(</span><span style="COLOR: #f6f3e8">strtolower</span><span style="COLOR: #f6f3e8">(</span><span style="COLOR: #cae682">$comment</span><span style="COLOR: #f6f3e8">-&gt;</span><span style="COLOR: #cae682">comment_author_email</span><span style="COLOR: #f6f3e8">));</span><span style="COLOR: #f6f3e8"> </span><span style="COLOR: #e5786d">?&gt;</span><span style="COLOR: #f6f3e8">" alt="" /&gt;</span></p>
<p>这样一来，就完美地实现了缓存 Gravatar 头像至本地服务器这一功能。</p>
<div id="rl_posts">    <div id="rl_posts_hd" class="box_hd">        <span id="rl_posts_title" class="box_title">与 <h2 itemprop="keywords"><a href="http://wange.im/tag/gravatar/" title="gravatar" rel="tag">gravatar</a>,<a href="http://wange.im/tag/wordpress/" title="WordPress" rel="tag">WordPress</a>,<a href="http://wange.im/tag/localhost/" title="本地" rel="tag">本地</a>,<a href="http://wange.im/tag/cache/" title="缓存" rel="tag">缓存</a>,<a href="http://wange.im/tag/static/" title="静态化" rel="tag">静态化</a></h2> 相关的文章        </span>    </div>    <div id="rl_posts_bd">        <ul class="clearfix"><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/cache-gravatar-for-wordpress-2-7.html" rel="bookmark" title="Wordpress 2.7+主题 gravatar 头像缓存">Wordpress 2.7+主题 gravatar 头像缓存</a>        <div class="rl_date">2009年11月13日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/qq-gravatar-cache.html" rel="bookmark" title="QQ 自定义头像+Gravatar 头像缓存">QQ 自定义头像+Gravatar 头像缓存</a>        <div class="rl_date">2010年04月6日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/gravatar-buffer-supplement-in-wordpress.html" rel="bookmark" title="Wordpress gravatar 头像缓存补充说明">Wordpress gravatar 头像缓存补充说明</a>        <div class="rl_date">2010年01月19日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/recent-comment-with-avatar-in-wordpress.html" rel="bookmark" title="Wordpress 侧边栏带头像的最新评论">Wordpress 侧边栏带头像的最新评论</a>        <div class="rl_date">2009年12月26日</div>    </div></li>        </ul>    </div></div>]]></content:encoded>
			<wfw:commentRss>http://wange.im/cache-gravatar.html/feed</wfw:commentRss>
		<slash:comments>90</slash:comments>
		</item>
		<item>
		<title>启用 WordPress object-cache 缓存</title>
		<link>http://wange.im/wordpress-object-cache.html</link>
		<comments>http://wange.im/wordpress-object-cache.html#comments</comments>
		<pubDate>Fri, 12 Jun 2009 11:12:22 +0000</pubDate>
		<dc:creator>万戈</dc:creator>
				<category><![CDATA[电脑网络]]></category>
		<category><![CDATA[精品推荐]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[优化]]></category>
		<category><![CDATA[教程]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://wange.im/?p=964</guid>
		<description><![CDATA[虽然已经写下《Wordpress优化小结》，但是还远没有达到可以终结的地步。YSlow 都已经是 Grade A 了，可我还是没达到无欲无求的境界，之前承诺说近期不会对 WordPress 进行优化了，但看到了有更好的优化方法，我就控制不住手痒痒，再一次把 WordPress 优化了。没有最快，只有更快，我那强烈地Wordpress瘦身欲几乎已经是一种癫狂的病态了。 这次优化的方法是用 WordPress Object Cache 缓存页面，我以前用过缓存插件，但是发现效果绝对远没有此方法显著。而且我在最新的 WordPress 2.8 下完美地实现了这一缓存效果，所以强烈推荐。 WordPress Object Cache 可以将一个耗时查询或者运算结果存储到一个缓存文件，这样就可以让我们不用老是重复到数据库中获取不变的数据，以缩短用户查看页面的速度。那么，我们如何开启它呢？ 1、PHP 需要安装上 Memcached 扩展 是否安装了 Memcached 扩展请咨询服务器管理员，至少我的主机已经安装上了 Memcached 扩展。 2、编辑 wp-config.php 文件，添加如下代码： // Enable the WordPress Object Cache: define('ENABLE_CACHE', true); 3、新建 /wp-content/cache 目录，设置权限 777。 4、点此下载 object-cache.php 文件，解压后上传至 /wp-content 目录。 在启用 object cache 之前，我首页的数据库查询次数在60次左右，现在只有20多次，足足压缩了三分之二，不只加速了 WordPress，而且减轻了数据库的负载，效果相当明显。 本文部分转自：http://www.wopus.org/wordpress-deepin/tech/462.html [...]]]></description>
			<content:encoded><![CDATA[<p>虽然已经写下<a title="《Wordpress优化小结》" href="http://wange.im/optimization-wordpress-summary.html">《Wordpress优化小结》</a>，但是还远没有达到可以终结的地步。YSlow 都已经是 Grade A 了，可我还是没达到无欲无求的境界，之前承诺说近期不会对 WordPress 进行优化了，但看到了有更好的优化方法，我就控制不住手痒痒，再一次把 WordPress 优化了。没有最快，只有更快，我那强烈地Wordpress瘦身欲几乎已经是一种癫狂的病态了。</p>
<p>这次优化的方法是用 WordPress Object Cache 缓存页面，我以前用过缓存插件，但是发现效果绝对远没有此方法显著。而且我在最新的 WordPress 2.8 下完美地实现了这一缓存效果，所以强烈推荐。</p>
<p>WordPress Object Cache 可以将一个耗时查询或者运算结果存储到一个缓存文件，这样就可以让我们不用老是重复到数据库中获取不变的数据，以缩短用户查看页面的速度。那么，我们如何开启它呢？</p>
<p>1、PHP 需要安装上 Memcached 扩展</p>
<p>是否安装了 Memcached 扩展请咨询服务器管理员，至少我的主机已经安装上了 Memcached 扩展。</p>
<p>2、编辑 wp-config.php 文件，添加如下代码：</p>
<p><code>// Enable the WordPress Object Cache:<br />
define('ENABLE_CACHE', true);</code></p>
<p>3、新建 /wp-content/cache 目录，设置权限 777。</p>
<p>4、<a style="text-decoration:underline" title="object-cache.php" href="http://wange.im/wp-content/uploads/2009/06/object-cache.rar" target="_blank">点此下载</a> object-cache.php 文件，解压后上传至 /wp-content 目录。</p>
<p>在启用 object cache 之前，我首页的数据库查询次数在60次左右，现在只有20多次，足足压缩了三分之二，不只加速了 WordPress，而且减轻了数据库的负载，效果相当明显。</p>
<p>本文部分转自：http://www.wopus.org/wordpress-deepin/tech/462.html</p>
<div id="rl_posts">    <div id="rl_posts_hd" class="box_hd">        <span id="rl_posts_title" class="box_title">与 <h2 itemprop="keywords"><a href="http://wange.im/tag/wordpress/" title="WordPress" rel="tag">WordPress</a>,<a href="http://wange.im/tag/optimize/" title="优化" rel="tag">优化</a>,<a href="http://wange.im/tag/tutorial/" title="教程" rel="tag">教程</a>,<a href="http://wange.im/tag/database/" title="数据库" rel="tag">数据库</a>,<a href="http://wange.im/tag/cache/" title="缓存" rel="tag">缓存</a></h2> 相关的文章        </span>    </div>    <div id="rl_posts_bd">        <ul class="clearfix"><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/timthumb.php?src=http://wange.im/cache/phpmyadmin.jpg&amp;h=45&amp;w=45&amp;zc=1" alt="为数据库减负，让WP提速" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/speed-up-wordpress.html" rel="bookmark" title="为数据库减负，让WP提速">为数据库减负，让WP提速</a>        <div class="rl_date">2009年05月5日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/clean-options.html" rel="bookmark" title="数据库清理插件 Clean Options">数据库清理插件 Clean Options</a>        <div class="rl_date">2009年12月22日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/a-to-z-of-wordpress-htaccess-hacks.html" rel="bookmark" title="A-Z 26条WordPress.htaccess技巧 ">A-Z 26条WordPress.htaccess技巧 </a>        <div class="rl_date">2009年06月23日</div>    </div></li><li>    <div class="rl_thumb"><img src="http://wange.im/wp-content/themes/wange/imgs/category/computer.jpg" alt="电脑网络" width="45" height="45" itemprop="thumbnailUrl" />    </div>    <div class="rl_title">        <a href="http://wange.im/combine-js-file-in-two-steps.html" rel="bookmark" title="合并JS文件两步走">合并JS文件两步走</a>        <div class="rl_date">2009年06月13日</div>    </div></li>        </ul>    </div></div>]]></content:encoded>
			<wfw:commentRss>http://wange.im/wordpress-object-cache.html/feed</wfw:commentRss>
		<slash:comments>85</slash:comments>
		</item>
	</channel>
</rss>

