'boolean']); register_setting('wpavatar_basic', 'wpavatar_cdn_type', ['type' => 'string']); register_setting('wpavatar_basic', 'wpavatar_cravatar_route', ['type' => 'string']); register_setting('wpavatar_basic', 'wpavatar_third_party_mirror', ['type' => 'string']); register_setting('wpavatar_basic', 'wpavatar_custom_cdn', ['type' => 'string']); register_setting('wpavatar_basic', 'wpavatar_hash_method', ['type' => 'string']); register_setting('wpavatar_basic', 'wpavatar_timeout', ['type' => 'integer']); register_setting('wpavatar_cache', 'wpavatar_enable_cache', ['type' => 'boolean']); register_setting('wpavatar_cache', 'wpavatar_cache_path', [ 'type' => 'string', 'sanitize_callback' => [__CLASS__, 'sanitize_cache_path'] ]); register_setting('wpavatar_cache', 'wpavatar_cache_expire', ['type' => 'integer']); register_setting('wpavatar_advanced', 'wpavatar_seo_alt', ['type' => 'string']); register_setting('wpavatar_advanced', 'wpavatar_fallback_mode', ['type' => 'boolean']); register_setting('wpavatar_advanced', 'wpavatar_fallback_avatar', ['type' => 'string']); register_setting('wpavatar_shortcodes', 'wpavatar_shortcode_size', ['type' => 'integer']); register_setting('wpavatar_shortcodes', 'wpavatar_shortcode_class', ['type' => 'string']); register_setting('wpavatar_shortcodes', 'wpavatar_shortcode_shape', ['type' => 'string']); // 注册营销组件设置 register_setting('wpavatar_marketing', 'wpavatar_commenters_count', ['type' => 'integer']); register_setting('wpavatar_marketing', 'wpavatar_commenters_size', ['type' => 'integer']); register_setting('wpavatar_marketing', 'wpavatar_users_count', ['type' => 'integer']); register_setting('wpavatar_marketing', 'wpavatar_users_size', ['type' => 'integer']); } public static function sanitize_cache_path($value) { $value = sanitize_text_field($value); $value = rtrim($value, '/\\') . '/'; if (!preg_match('~^(?:/|\\\\|[a-zA-Z]:)~', $value)) { $value = WP_CONTENT_DIR . '/' . ltrim($value, '/\\'); } if (!file_exists($value)) { if (!wp_mkdir_p($value)) { add_settings_error( 'wpavatar_cache', 'cache_path_invalid', __('无法创建缓存目录,请检查权限', 'wpavatar'), 'error' ); return get_option('wpavatar_cache_path', WPAVATAR_CACHE_DIR); } } elseif (!is_dir($value)) { add_settings_error( 'wpavatar_cache', 'cache_path_invalid', __('指定的路径不是有效目录', 'wpavatar'), 'error' ); return get_option('wpavatar_cache_path', WPAVATAR_CACHE_DIR); } elseif (!is_writable($value)) { add_settings_error( 'wpavatar_cache', 'cache_path_invalid', __('缓存目录不可写,请检查权限', 'wpavatar'), 'error' ); return get_option('wpavatar_cache_path', WPAVATAR_CACHE_DIR); } // If multisite, ensure the site-specific cache directory exists if (is_multisite()) { $blog_id = get_current_blog_id(); $site_cache_dir = trailingslashit($value) . 'site-' . $blog_id; if (!file_exists($site_cache_dir)) { if (!wp_mkdir_p($site_cache_dir)) { add_settings_error( 'wpavatar_cache', 'cache_path_invalid', __('无法创建站点缓存目录,请检查权限', 'wpavatar'), 'error' ); return get_option('wpavatar_cache_path', WPAVATAR_CACHE_DIR); } } $index_file = $site_cache_dir . '/index.php'; if (!file_exists($index_file)) { @file_put_contents($index_file, ' wp_create_nonce('wpavatar_admin_nonce'), 'ajaxurl' => admin_url('admin-ajax.php'), 'cache_path' => wpavatar_get_option('wpavatar_cache_path', WPAVATAR_CACHE_DIR), 'plugin_url' => WPAVATAR_PLUGIN_URL, 'assets_url' => WPAVATAR_PLUGIN_URL . 'assets/', 'is_network_admin' => '0', 'is_multisite' => is_multisite() ? '1' : '0', ]); wp_localize_script('wpavatar-admin', 'wpavatar_l10n', [ 'checking' => __('检查中...', 'wpavatar'), 'checking_status' => __('正在检查缓存状态...', 'wpavatar'), 'check_failed' => __('检查失败,请重试', 'wpavatar'), 'request_failed' => __('请求失败,请检查网络连接', 'wpavatar'), 'check_cache' => __('检查缓存状态', 'wpavatar'), 'confirm_purge' => __('确定要清空所有缓存头像吗?此操作无法撤销。', 'wpavatar'), 'purging' => __('清空中...', 'wpavatar'), 'purging_cache' => __('正在清空缓存...', 'wpavatar'), 'purge_failed' => __('清空失败,请重试', 'wpavatar'), 'purge_cache' => __('清空缓存', 'wpavatar'), 'enter_custom_cdn' => __('请输入自定义CDN域名', 'wpavatar'), 'enter_cache_path' => __('请输入缓存目录路径', 'wpavatar'), 'settings_saved' => __('设置已成功保存。', 'wpavatar') ]); } public static function display_notices() { settings_errors('wpavatar_basic'); settings_errors('wpavatar_cache'); settings_errors('wpavatar_advanced'); settings_errors('wpavatar_shortcodes'); settings_errors('wpavatar_marketing'); } public static function render_settings_page() { // 检查多站点网络控制 if (is_multisite()) { $network_enabled = get_site_option('wpavatar_network_enabled', 1); $network_enforce = get_site_option('wpavatar_network_enforce', 0); $network_controlled_options = get_site_option('wpavatar_network_controlled_options', array()); if (!is_array($network_controlled_options)) { $network_controlled_options = explode(',', $network_controlled_options); } } $active_tab = isset($_GET['tab']) ? sanitize_text_field($_GET['tab']) : 'basic'; ?>








> > >



>


>




>

>




>

$avatar) : ?>

%s', esc_url($wpcy_link), __('文派叶子 🍃(WPCY.COM)', 'wpavatar') ) ); ?>




>

>

[wpavatar]
  • size -
  • user_id -
  • class -
  • shape -
  • title -
[wpavatar size="128" user_id="1" shape="circle" class="my-avatar"]
[wpavatar_username]
  • user_id -
  • before -
  • after -
[wpavatar_username before="欢迎," after="!"]

  • {wpavatar} -
  • {wpavatar_username} -