id : ''; $is_discussion_page = ($screen_id === 'options-discussion' || (isset($_GET['page']) && $_GET['page'] === 'discussion')); $is_comments_page = ($screen_id === 'edit-comments' || $screen_id === 'comment'); $is_profile_page = ($screen_id === 'profile' || $screen_id === 'user-edit'); if ($is_discussion_page || $is_comments_page || $is_profile_page) { $translated_text = str_replace('Gravatar', 'Cravatar', $translated_text); $translated_text = str_replace('gravatar', 'cravatar', $translated_text); } return $translated_text; } /** * Replace Gravatar text with Cravatar in plural translations * * @param string $translated_text Translated text * @param string $single Singular text * @param string $plural Plural text * @param int $number Number for plural form * @return string Modified translated text */ function wpavatar_replace_gravatar_text_plural($translated_text, $single, $plural, $number) { // Get enable_cravatar setting $enable_cravatar = wpavatar_get_option('wpavatar_enable_cravatar', 1); if (!$enable_cravatar) { return $translated_text; } $current_screen = function_exists('get_current_screen') ? get_current_screen() : null; $screen_id = $current_screen ? $current_screen->id : ''; $is_relevant_page = ($screen_id === 'options-discussion' || $screen_id === 'edit-comments' || $screen_id === 'comment' || $screen_id === 'profile' || $screen_id === 'user-edit' || (isset($_GET['page']) && $_GET['page'] === 'discussion')); if ($is_relevant_page) { $translated_text = str_replace('Gravatar', 'Cravatar', $translated_text); $translated_text = str_replace('gravatar', 'cravatar', $translated_text); } return $translated_text; } /** * Helper function to get the correct option based on multisite status * * @param string $option_name Option name * @param mixed $default Default value * @return mixed Option value */ function wpavatar_get_option($option_name, $default = false) { if (is_multisite()) { // Check if network settings are enabled if (get_site_option('wpavatar_network_enabled', 1)) { // Check if this option is controlled by network $network_controlled_options = get_site_option('wpavatar_network_controlled_options', array()); // Convert to array if it's a string (for backward compatibility) if (!is_array($network_controlled_options)) { $network_controlled_options = explode(',', $network_controlled_options); } // If this option is controlled by network or network enforces all settings if (in_array($option_name, $network_controlled_options) || get_site_option('wpavatar_network_enforce', 0)) { return get_site_option($option_name, $default); } } } // Default to site option return get_option($option_name, $default); } // Register activation hook register_activation_hook(__FILE__, function() { // Set default options for single site add_option('wpavatar_enable_cravatar', 1); add_option('wpavatar_cdn_type', 'cravatar_route'); add_option('wpavatar_cravatar_route', 'cravatar.com'); add_option('wpavatar_third_party_mirror', 'weavatar.com'); add_option('wpavatar_custom_cdn', ''); add_option('wpavatar_hash_method', 'md5'); add_option('wpavatar_timeout', 5); add_option('wpavatar_enable_cache', 1); add_option('wpavatar_cache_path', WPAVATAR_CACHE_DIR); add_option('wpavatar_cache_expire', 15); add_option('wpavatar_seo_alt', '%s的头像'); add_option('wpavatar_fallback_mode', 1); add_option('wpavatar_fallback_avatar', 'default'); add_option('wpavatar_shortcode_size', 96); add_option('wpavatar_shortcode_class', 'wpavatar'); add_option('wpavatar_shortcode_shape', 'square'); // 添加营销组件默认设置 add_option('wpavatar_commenters_count', 15); add_option('wpavatar_commenters_size', 45); add_option('wpavatar_users_count', 15); add_option('wpavatar_users_size', 40); // Create cache directory wp_mkdir_p(WPAVATAR_CACHE_DIR); // Create index.php to prevent directory listing $index_file = rtrim(WPAVATAR_CACHE_DIR, '/\\') . '/index.php'; if (!file_exists($index_file)) { @file_put_contents($index_file, '\n"; $htaccess_content .= "ExpiresActive On\n"; $htaccess_content .= "ExpiresByType image/jpeg \"access plus 1 week\"\n"; $htaccess_content .= "\n"; @file_put_contents($htaccess_file, $htaccess_content); } // Set default options for multisite if (is_multisite()) { // Network settings add_site_option('wpavatar_network_enabled', 1); add_site_option('wpavatar_network_enforce', 0); // Define default network controlled options $default_controlled = array( 'wpavatar_enable_cravatar', 'wpavatar_cdn_type', 'wpavatar_cravatar_route', 'wpavatar_third_party_mirror', 'wpavatar_custom_cdn' ); add_site_option('wpavatar_network_controlled_options', $default_controlled); // Copy regular options to network options foreach ([ 'wpavatar_enable_cravatar', 'wpavatar_cdn_type', 'wpavatar_cravatar_route', 'wpavatar_third_party_mirror', 'wpavatar_custom_cdn', 'wpavatar_hash_method', 'wpavatar_timeout', 'wpavatar_enable_cache', 'wpavatar_cache_path', 'wpavatar_cache_expire', 'wpavatar_seo_alt', 'wpavatar_fallback_mode', 'wpavatar_fallback_avatar', 'wpavatar_shortcode_size', 'wpavatar_shortcode_class', 'wpavatar_shortcode_shape', // 营销组件设置 'wpavatar_commenters_count', 'wpavatar_commenters_size', 'wpavatar_users_count', 'wpavatar_users_size' ] as $option_name) { add_site_option($option_name, get_option($option_name)); } // If current site is not the main site, create site-specific cache dir if (!is_main_site()) { $blog_id = get_current_blog_id(); $cache_dir = trailingslashit(WPAVATAR_CACHE_DIR) . 'site-' . $blog_id; wp_mkdir_p($cache_dir); $index_file = $cache_dir . '/index.php'; if (!file_exists($index_file)) { @file_put_contents($index_file, '