现在的位置: 首页博客建站>正文
gravatar头像不显示
2010年10月19日 博客建站 评论数 7 ⁄ 被围观 2,854 次+

gravatar头像不显示

  近日,Gravatar网站CND(内容分发网络)未知原因出现问题,国内无法显示以0.gravatar.com和1.gravatar.com为前缀的头像,而以www.gravatar.com为前缀的却可以,如果你启用了头像缓存插件或主题具备头像缓存功能,空间主机又在国外,不会受到影响,而国内主机则无法实现头像缓存,这一问题严重拖慢了页面打开速度.
  Gravatar部分服务器在国内访问困难,同样受到困扰的还包括WordPress存储静态文件的s.wordpress.org缓存服务器,以及jQuery的code.jquery.com等。
  可能有人会问,为什么有的站点的Gravatar头像地址是以www.gravatar.com开头,有的却是以0.gravatar.com和1.gravatar.com为前缀呢?WordPress 从2.5版开始集成了Gravatar头像功能,随着使用Gravatar头像的用户越来越多,为了减轻服务器负担,Gravatar网站采用CDN(内容分发网络),就近从Gravatar网站服务器加载头像,提高页面打开速度。正因为如此从WordPress 3.0开始,改进源代码适应CDN,提高头像加载速度。默认情况下还在使用老版本WordPress的用户,由于没有启用CDN,所以前缀是www.gravatar.com,直接从主站加载头像,不会受到影响。
  下面就说说如何修改WordPress源文件,直接从 http://www.gravatar.com 加载Gravatar头像。

Gravatar头像不显示解决方法一

打开WordPress程序wp-includes目录中的pluggable.php
在第1649行找到:
$host = sprintf("http://%d.gravatar.com", (hexdec($email_hash{0}) % 2 ));
修改为:
$host = sprintf( "http://www.gravatar.com", ( hexdec($email_hash{0}) % 2 ));
在第1651行找到:
$host = 'http://0.gravatar.com';
修改为:
$host = 'http://www.gravatar.com';
  完成保存后覆盖原文件即可

Gravatar头像不显示解决方法二

使用插件:Gravatar Fixed

插件内容如下
<?php
/*
Plugin Name: Gravatar 头像修正
Plugin URI: http://wpceo.com/gravatar-fixed/
Description: 该插件用于修正Gravatar服务器无法正常访问的情况,并且可以自定义Gravatar服务器地址
Author: WPCEO
Author URI: http://wpceo.com/
Version: 1.0
*/
add_action('admin_menu','register_gravatar_admin_menu');
function register_gravatar_admin_menu(){
 add_options_page('Gravatar头像', 'Gravatar头像', 'manage_options', 'gravatar_fixed', 'gravatar_fixed_options');
 add_action( 'admin_init', 'register_gravatar_settings' );
}
function register_gravatar_settings() {
 register_setting( 'gravatar-settings', 'gravatar_server_1' );
 register_setting( 'gravatar-settings', 'gravatar_server_s' );
}
function gravatar_fixed_options(){
?>
<div>
<h2>Gravatar 头像修正</h2>
<form method="post" action="options.php">
<?php settings_fields( 'gravatar-settings' ); ?>
<table>
<tr valign="top">
<th scope="row">Gravatar 服务器</th>
<td><input type="text" name="gravatar_server_1" value="<?php echo get_option('gravatar_server_1'); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">Gravatar SSL 服务器</th>
<td><input type="text" name="gravatar_server_s" value="<?php echo get_option('gravatar_server_s'); ?>" /></td>
</tr>
</table>
<p>
<input type="submit" value="<?php _e('Save Changes') ?>" />
</p>
</form>
</div>
<?php
}

register_activation_hook(__FILE__,'gravatar_fixed_install');
function gravatar_fixed_install() {
 if(!get_option('gravatar_server_1')){
  update_option('gravatar_server_1','http://www.gravatar.com');
 }
 if(!get_option('gravatar_server_s')){
  update_option('gravatar_server_s','https://secure.gravatar.com');
 }
}

// Add settings link on plugin page
function register_plugin_settings_link($links) {
  $settings_link = '<a href="options-general.php?page=gravatar_fixed">设置</a>';
  array_unshift($links, $settings_link);
  return $links;
}
$plugin = plugin_basename(__FILE__);
add_filter("plugin_action_links_{$plugin}", 'register_plugin_settings_link' );

if ( !function_exists( 'get_avatar' ) ) :
function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) {
 if ( ! get_option('show_avatars') )
  return false;

 if ( false === $alt)
  $safe_alt = '';
 else
  $safe_alt = esc_attr( $alt );

 if ( !is_numeric($size) )
  $size = '96';

 $email = '';
 if ( is_numeric($id_or_email) ) {
  $id = (int) $id_or_email;
  $user = get_userdata($id);
  if ( $user )
   $email = $user->user_email;
 } elseif ( is_object($id_or_email) ) {
  // No avatar for pingbacks or trackbacks
  $allowed_comment_types = apply_filters( 'get_avatar_comment_types', array( 'comment' ) );
  if ( ! empty( $id_or_email->comment_type ) && ! in_array( $id_or_email->comment_type, (array) $allowed_comment_types ) )
   return false;

  if ( !empty($id_or_email->user_id) ) {
   $id = (int) $id_or_email->user_id;
   $user = get_userdata($id);
   if ( $user)
    $email = $user->user_email;
  } elseif ( !empty($id_or_email->comment_author_email) ) {
   $email = $id_or_email->comment_author_email;
  }
 } else {
  $email = $id_or_email;
 }

 if ( empty($default) ) {
  $avatar_default = get_option('avatar_default');
  if ( empty($avatar_default) )
   $default = 'mystery';
  else
   $default = $avatar_default;
 }

 if ( !empty($email) )
  $email_hash = md5( strtolower( $email ) );

 if ( is_ssl() ) {
  $host = get_option('gravatar_server_s') ? get_option('gravatar_server_s') : 'https://secure.gravatar.com';
 } else {
  $host = get_option('gravatar_server_1') ? get_option('gravatar_server_1') : 'http://www.gravatar.com';
 }

 if ( 'mystery' == $default )
  $default = "$host/avatar/ad516503a11cd5ca435acc9bb6523536?s={$size}"; // ad516503a11cd5ca435acc9bb6523536 == md5('unknown@gravatar.com')
 elseif ( 'blank' == $default )
  $default = includes_url('images/blank.gif');
 elseif ( !empty($email) && 'gravatar_default' == $default )
  $default = '';
 elseif ( 'gravatar_default' == $default )
  $default = "$host/avatar/s={$size}";
 elseif ( empty($email) )
  $default = "$host/avatar/?d=$default&amp;s={$size}";
 elseif ( strpos($default, 'http://') === 0 )
  $default = add_query_arg( 's', $size, $default );

 if ( !empty($email) ) {
  $out = "$host/avatar/";
  $out .= $email_hash;
  $out .= '?s='.$size;
  $out .= '&amp;d=' . urlencode( $default );

  $rating = get_option('avatar_rating');
  if ( !empty( $rating ) )
   $out .= "&amp;r={$rating}";

  $avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
 } else {
  $avatar = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
 }

 return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);
}
endif;

目前有 7 条留言 其中:访客:6 条, 博主:1 条

  1. 唐伯猫 : 2011年10月24日00:29:20  1楼 @回复 回复

    嗯,貌似www的也打不开了的说

  2. 枯木 : 2010年10月31日14:03:08  2楼 @回复 回复

    不用Gravatar就不会有这样的问题了

  3. 蜂蜜保健网 : 2010年10月26日16:45:16  3楼 @回复 回复

    学习了,收藏。

  4. Tuixy : 2010年10月24日19:09:54  4楼 @回复 回复

    进来很多文章都介绍了如何解决Gravatar不显示图片的问题,暂时先收藏下有时间也折腾下。

  5. 点点 : 2010年10月20日17:43:24  5楼 @回复 回复

    你用的是国外1G主机吗?

    • 小辉 : 2010年10月20日19:16:01 @回复 回复

      小张的,北京主机。ip地址你ping一下就知道了。最好找小张问下。

  6. 淘宝销售排行榜 : 2010年10月20日01:35:00  6楼 @回复 回复

    分享的不错 又学了招

给我留言

留言无头像?