From 46eec958c7d0042aaa4762196caf9a99019546e4 Mon Sep 17 00:00:00 2001 From: Seaton Jiang Date: Sat, 30 Apr 2022 17:33:55 +0800 Subject: [PATCH] feat: upgrade gravatar cdn --- inc/theme-core.php | 28 +++++++++++++++++--------- inc/theme-options.php | 47 +++++++++++++++++++++++++++++++++++++------ 2 files changed, 60 insertions(+), 15 deletions(-) diff --git a/inc/theme-core.php b/inc/theme-core.php index ded7d16..3f56751 100644 --- a/inc/theme-core.php +++ b/inc/theme-core.php @@ -4,7 +4,7 @@ * 核心函数 * @author Seaton Jiang * @license GPL-3.0 License - * @version 2022.02.20 + * @version 2022.04.30 */ // CDN 资源地址 @@ -192,15 +192,25 @@ add_filter('style_loader_src', function ($href) { return false; }); -// 替换国内 Gravatar 源 -function get_https_avatar($avatar) -{ - $avatar = str_replace(array("www.gravatar.com", "0.gravatar.com", "1.gravatar.com", "2.gravatar.com", "3.gravatar.com", "secure.gravatar.com"), kratos_option('g_gravatar', 'sdn.geekzu.org') ?: "secure.gravatar.com", $avatar); - $avatar = str_replace("http://", "https://", $avatar); - return $avatar; +// Gravatar 加速服务 +if (kratos_option('g_replace_gravatar_url_fieldset')['g_replace_gravatar_url'] ?? true) { + function replace_gravatar_url($avatar) + { + $gravatar_server_list = array( + 'geekzu' => 'sdn.geekzu.org', + 'loli' => 'gravatar.loli.net', + 'other' => kratos_option('g_replace_gravatar_url_fieldset')['g_custom_gravatar_server'] ?? null, + ); + $gravatar_server = $gravatar_server_list[kratos_option('g_replace_gravatar_url_fieldset')['g_select_gravatar_server']] ?: 'secure.gravatar.com'; + $avatar = str_replace(array('www.gravatar.com', '0.gravatar.com', '1.gravatar.com', '2.gravatar.com', '3.gravatar.com', 'secure.gravatar.com'), $gravatar_server, $avatar); + $avatar = str_replace('http://', 'https://', $avatar); + + return $avatar; + } + + add_filter('get_avatar', 'replace_gravatar_url'); + add_filter('get_avatar_url', 'replace_gravatar_url'); } -add_filter('get_avatar', 'get_https_avatar'); -add_filter('get_avatar_url', 'get_https_avatar'); // 主题更新检测 $myUpdateChecker = Puc_v4_Factory::buildUpdateChecker( diff --git a/inc/theme-options.php b/inc/theme-options.php index cf96bd0..20beffc 100644 --- a/inc/theme-options.php +++ b/inc/theme-options.php @@ -4,7 +4,7 @@ * 主题选项 * @author Seaton Jiang * @license GPL-3.0 License - * @version 2022.04.29 + * @version 2022.04.30 */ defined('ABSPATH') || exit; @@ -156,11 +156,46 @@ CSF::createSection($prefix, array( 'default' => '260', ), array( - 'id' => 'g_gravatar', - 'type' => 'text', - 'title' => __('Gravatar 加速', 'kratos'), - 'subtitle' => __('自定义 Gravatar 头像加速地址', 'kratos'), - 'default' => 'sdn.geekzu.org', + 'id' => 'g_replace_gravatar_url_fieldset', + 'type' => 'fieldset', + 'fields' => array( + array( + 'type' => 'subheading', + 'content' => __('Gravatar 加速服务', 'kratos'), + ), + array( + 'id' => 'g_replace_gravatar_url', + 'type' => 'switcher', + 'title' => __('功能开关', 'kratos'), + 'subtitle' => __('开启/关闭 Gravatar 加速服务功能', 'kratos'), + ), + array( + 'id' => 'g_select_gravatar_server', + 'type' => 'select', + 'title' => __('Gravatar 加速服务地址', 'kratos'), + 'subtitle' => __('请选择 Gravatar 加速服务地址', 'kratos'), + 'options' => array( + 'loli' => __('Loli 加速服务', 'kratos'), + 'geekzu' => __('极客族加速服务', 'kratos'), + 'other' => __('自定义加速服务', 'kratos'), + ), + 'desc' => __('国内用户推荐「极客族加速服务」,海外用户推荐「Loli 加速服务」。', 'kratos'), + 'dependency' => array('g_replace_gravatar_url', '==', 'true'), + ), + array( + 'id' => 'g_custom_gravatar_server', + 'type' => 'text', + 'title' => __('自定义 Gravatar 加速服务地址', 'kratos'), + 'subtitle' => __('请输入 Gravatar 加速服务地址', 'kratos'), + 'desc' => __('直接输入网址即可,不需要协议头和最后的斜杠。', 'kratos'), + 'placeholder' => 'secure.gravatar.com', + 'dependency' => array('g_replace_gravatar_url|g_select_gravatar_server', '==|==', 'true|other'), + ), + ), + 'default' => array( + 'g_replace_gravatar_url' => 1, + 'g_select_gravatar_server' => 'geekzu', + ) ), array( 'id' => 'g_renameother_fieldset',