feat(user): add local avatar management flow
This commit is contained in:
1 parent
1b4ba8938a
commit
e94437ef60
20 files changed
+289
-186
No files matched your search
@@ -20,56 +20,6 @@ add_filter('show_admin_bar', '__return_false');
|
||||
|
||||
add_filter('pre_option_link_manager_enabled', '__return_true');
|
||||
|
||||
// ============================================================
|
||||
// Gravatar 头像源替换(4层拦截:get_avatar_url / pre_get_avatar_data / avatar_defaults / ob_start 兜底)
|
||||
// ============================================================
|
||||
|
||||
function aksrt_get_gravatar_source() {
|
||||
if (class_exists('\AKSRT\Settings\Settings')) {
|
||||
return \AKSRT\Settings\Settings::avatar_source();
|
||||
}
|
||||
|
||||
$source = aksrt_get_setting('avatar_source', 'cn.cravatar.com');
|
||||
$allowed = array('cn.cravatar.com', 'cn.gravatar.com', 'gravatar.com');
|
||||
return in_array($source, $allowed, true) ? $source : 'cn.cravatar.com';
|
||||
}
|
||||
|
||||
function aksrt_replace_gravatar_domain($url) {
|
||||
$source = aksrt_get_gravatar_source();
|
||||
if ($source === 'gravatar.com') return $url;
|
||||
return preg_replace('#^https?://([0-9]+\.)?(secure\.)?gravatar\.com#i', 'https://' . $source, $url);
|
||||
}
|
||||
|
||||
add_filter('get_avatar_url', function ($url) {
|
||||
return aksrt_replace_gravatar_domain($url);
|
||||
});
|
||||
|
||||
add_filter('pre_get_avatar_data', function ($args) {
|
||||
if (!empty($args['url'])) {
|
||||
$args['url'] = aksrt_replace_gravatar_domain($args['url']);
|
||||
}
|
||||
return $args;
|
||||
}, 10, 1);
|
||||
|
||||
add_filter('avatar_defaults', function ($defaults) {
|
||||
foreach ($defaults as &$url) {
|
||||
$url = aksrt_replace_gravatar_domain($url);
|
||||
}
|
||||
unset($url);
|
||||
return $defaults;
|
||||
});
|
||||
|
||||
// 全局输出缓冲兜底(覆盖 JS/API 直接请求的 URL)
|
||||
add_action('init', function () {
|
||||
if (is_admin()) ob_start(function ($html) {
|
||||
return preg_replace_callback(
|
||||
'#https?://([0-9]+\.)?(secure\.)?gravatar\.com#i',
|
||||
function () { return 'https://' . aksrt_get_gravatar_source(); },
|
||||
$html
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
// ============================================================
|
||||
// SMTP 邮件配置注入
|
||||
// ============================================================
|
||||
|
||||
Reference in new issue
Block a user