settings = get_settings();
$this->init();
}
/**
* 初始化初认头像功能
*/
private function init() {
if (!empty($this->settings['cravatar'])) {
add_filter('user_profile_picture_description', [$this, 'set_user_profile_picture_for_cravatar'], 1);
add_filter('avatar_defaults', [$this, 'set_defaults_for_cravatar'], 1);
add_filter('um_user_avatar_url_filter', [$this, 'get_cravatar_url'], 1);
add_filter('bp_gravatar_url', [$this, 'get_cravatar_url'], 1);
add_filter('get_avatar_url', [$this, 'get_cravatar_url'], 1);
}
}
/**
* 获取 Cravatar URL
*/
public function get_cravatar_url($url) {
switch ($this->settings['cravatar']) {
case 'cn':
return $this->replace_avatar_url($url, 'cn.cravatar.com');
case 'global':
return $this->replace_avatar_url($url, 'en.cravatar.com');
case 'weavatar':
return $this->replace_avatar_url($url, 'weavatar.com');
default:
return $url;
}
}
/**
* 替换头像 URL
*/
public function replace_avatar_url($url, $domain) {
$sources = array(
'www.gravatar.com',
'0.gravatar.com',
'1.gravatar.com',
'2.gravatar.com',
's.gravatar.com',
'secure.gravatar.com',
'cn.gravatar.com',
'en.gravatar.com',
'gravatar.com',
'sdn.geekzu.org',
'gravatar.duoshuo.com',
'gravatar.loli.net',
'dn-qiniu-avatar.qbox.me'
);
return str_replace($sources, $domain, $url);
}
/**
* 设置 WordPress 讨论设置中的默认 LOGO 名称
*/
public function set_defaults_for_cravatar($avatar_defaults) {
if ($this->settings['cravatar'] == 'weavatar') {
$avatar_defaults['gravatar_default'] = 'WeAvatar';
} else {
$avatar_defaults['gravatar_default'] = '初认头像';
}
return $avatar_defaults;
}
/**
* 设置个人资料卡中的头像上传地址
*/
public function set_user_profile_picture_for_cravatar() {
if ($this->settings['cravatar'] == 'weavatar') {
return '您可以在 WeAvatar 修改您的资料图片';
} else {
return '您可以在初认头像修改您的资料图片';
}
}
}