这个阿凡达还是很折腾人的.
昨天写了两种方法,各有各的缺点,第一种要求对博客主题进行编辑,这个对小白要求很高.第二种办法随时都会挂掉.
所以,今天我写的办法是把两个结合起来.
我是免插件流,所以直接手工hack了.
GRAVATAR CACHE还是需要的.它提供了一个Gravatar API.下载地址:http://scott.yang.id.au/code/gravatar-cache/#toc-download
然后打开index.php,修改代码.假设我就放在我博客根目录 http://minidr.com/gravatar/ 这个路径下.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $config = array( 'gravatar' => 'http://www.gravatar.com/avatar.php', 'rating' => 'PG', //默认头像等级 'size' => 24, //默认头像宽度高度,依据博客原头像大小的最大值,也就是 get_avatar($rc_comm,$size='24') 这个函数中的那个数字中的最大值 'default' => '', 'border' => '', 'referrer' => '', 'pos_expiry' => 604800, 'neg_expiry' => 43200, 'neg_handler' => 'file', 'proxy' => '', 'basedir' => dirname(__FILE__), 'x-sendfile' => false, 'debug' => false ); |
接着,在 profile 目录,创建一个名为 avatar.php 的文件,用非记事本输入以下字符:
1 2 3 4 5 | <?php $config['default'] = 'http://minidr.com/gravatar/gravatar.png'; //无头像时返回的默认头像路径,假设我放了这张照片 $config['rating'] = 'PG';//gravatar的内容级别 $config['size'] = 24;//头像尺寸 > |
这个php的文件名也是API地址的一部分.可以变化.
接着打开 .htaccess 文件,修改:
1 2 3 4 5 6 | <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> |
倒数第二行改成目录 我的是
1 | RewriteRule . /gravatar/index.php [L] |
这样就得到了一个Gravatar地址 http://minidr.com/gravatar/avatar/ .如果搭建有困难,可以拿别人的API地址.
接下来直接篡改 WordPress 的 get_avatar() 函数里面的API地址.位于 /wp-includes/pluggable.php 1645 行.
1645 1646 1647 1648 1649 1650 1651 1652 | if ( is_ssl() ) { $host = 'https://secure.gravatar.com'; } else { if ( !empty($email) ) $host = sprintf( "http://%d.gravatar.com", ( hexdec( $email_hash{0} ) % 2 ) ); else $host = 'http://0.gravatar.com'; } |
这个几行直接去掉,改成API地址
1645 | $host = 'http://minidr.com/gravatar/avatar'; //地址后面千万不要加"/" |
大概就是这样吧.具体的地址可以变动.关系到文件夹命名和新建php的文件名.
Comments