post_type !== 'post') return; self::flush_category_recommend_cache(); } // ============================================ // 设置读取方法 // ============================================ /** 获取全部设置(per-request memo) */ public static function get_all(): array { if (self::$cached_all !== null) { return self::$cached_all; } // Canonical theme settings live only in aksrt_settings. // Operational configs (captcha/moderation/oauth/footer/etc.) stay standalone. $settings = get_option('aksrt_settings', []); if (!is_array($settings)) { $settings = []; } self::$cached_all = $settings; return $settings; } /** * 显式刷新缓存(外部直接修改 option 后可调用)。 */ public static function flush_settings_cache(): void { self::$cached_all = null; } /** * 读取指定 domain/section 的配置(委托 Schema Provider)。 * * @param string $domain 域名 (global, page_display, post_list, ...) * @param string $section 分区名 (可为空,读取整个 domain) * @return array */ public static function read_domain(string $domain, string $section = ''): array { $provider = \AKSRT\Admin\SchemaProvider::get_instance(); return $provider->read_settings($domain, $section); } /** * 写入指定 domain/section 的配置(委托 Schema Provider)。 * * 仅写入当前 section allowlist 中的字段,不会覆盖同 option 中其它 section 的字段。 * 写入后自动刷新 memo cache 并触发 action。 * * @param string $domain 域名 * @param string $section 分区名 * @param array $data 要写入的数据 * @return bool */ public static function write_domain(string $domain, string $section, array $data): bool { $provider = \AKSRT\Admin\SchemaProvider::get_instance(); $result = $provider->write_settings($domain, $data, $section); if ($result) { self::flush_settings_cache(); $option_key = $provider->get_option_key($domain, $section); do_action('aksrt_settings_domain_saved', $domain, $section, $option_key); } return $result; } /** * 获取指定 domain/section 的默认值。 */ public static function get_domain_defaults(string $domain, string $section = ''): array { $provider = \AKSRT\Admin\SchemaProvider::get_instance(); return $provider->get_defaults($domain, $section); } /** * 重置指定 domain/section 到默认值。 */ public static function reset_domain(string $domain, string $section = ''): bool { $provider = \AKSRT\Admin\SchemaProvider::get_instance(); $result = $provider->reset_to_defaults($domain, $section); if ($result) { self::flush_settings_cache(); do_action('aksrt_settings_domain_reset', $domain, $section); } return $result; } public static function get_value(string $key, $default = null) { $settings = self::get_all(); return array_key_exists($key, $settings) ? $settings[$key] : $default; } /** 获取搜索框占位文案 */ public static function search_placeholder(): string { return ThemeSearch::search_placeholder(); } /** 是否启用搜索历史 */ public static function search_history_enabled(): bool { return ThemeSearch::search_history_enabled(); } /** 是否启用热门搜索 */ public static function hot_search_enabled(): bool { return ThemeSearch::hot_search_enabled(); } /** 获取热门搜索关键词 */ public static function hot_search_keywords(): array { return ThemeSearch::hot_search_keywords(); } /** 热门搜索标题(留空使用默认) */ public static function search_popular_title(): string { return ThemeSearch::search_popular_title(); } /** 置顶搜索词(始终显示在最前面) */ public static function search_popular_sticky(): array { return ThemeSearch::search_popular_sticky(); } /** 是否在搜索面板显示热门文章 */ public static function search_posts_enabled(): bool { return ThemeSearch::search_posts_enabled(); } /** 搜索结果是否排除页面 */ public static function search_no_page(): bool { return ThemeSearch::search_no_page(); } /** 获取搜索排除分类 ID 列表 */ public static function search_exclude_cats(): array { return ThemeSearch::search_exclude_cats(); } /** 是否启用分类搜索选择器 */ public static function search_cat_enabled(): bool { return ThemeSearch::search_cat_enabled(); } /** 获取默认搜索分类 */ public static function search_cat_in(): string { return ThemeSearch::search_cat_in(); } /** 允许用户选择的更多分类 ID */ public static function search_more_cat_obj(): array { return ThemeSearch::search_more_cat_obj(); } /** 是否启用自定义搜索匹配范围 */ public static function search_custom_key_enabled(): bool { return ThemeSearch::search_custom_key_enabled(); } /** 获取自定义搜索匹配字段列表 */ public static function search_custom_key(): array { return ThemeSearch::search_custom_key(); } /** 是否启用搜索结果 taxonomy 筛选 */ public static function search_facets_enabled(): bool { return ThemeSearch::search_facets_enabled(); } /** 获取搜索结果筛选 taxonomy 排序列表 */ public static function search_facets_order(): array { return ThemeSearch::search_facets_order(); } /** * Meilisearch integration configuration. * * @return array{enabled:bool,api_url:string,api_key:string,index_prefix:string,synonyms:array} */ public static function get_meilisearch_config(): array { return ThemeSearch::get_meilisearch_config(); } /** * pre_get_posts 过滤:应用搜索排除配置 * - search_no_page: 排除页面 * - search_exclude_cats: 排除指定分类 */ public static function filter_search_query($query): void { ThemeSearch::filter_search_query($query); } /** * pre_get_posts: apply global list_orderby on archive/tag/category/search pages. * * Only fires when no explicit orderby is set by URL params or other hooks. */ public static function apply_list_orderby($query): void { PostDisplay::apply_list_orderby($query); } /** * 获取搜索内容类型配置 * * @return array{types: string[], default: string} */ public static function get_search_content_types(): array { return ThemeSearch::get_search_content_types(); } /** 默认主题模式 (white-theme / dark-theme / time-auto) */ public static function theme_mode(): string { return ThemeSearch::theme_mode(); } /** 主题模式 → JS 可消费的简化值 (light / dark / time-auto) */ public static function theme_mode_js_value(): string { return ThemeSearch::theme_mode_js_value(); } /** time-auto:对齐 legacy 早晚 8 点自动切换语义。 */ public static function time_auto_theme_mode(): string { return ThemeSearch::time_auto_theme_mode(); } /** 首屏主题模式:优先消费 legacy 兼容 cookie,回退后台默认值。 */ public static function initial_theme_mode(): string { return ThemeSearch::initial_theme_mode(); } /** 获取主题色 */ public static function primary_color(): string { return ThemeSearch::primary_color(); } /** 获取主题皮肤预设 hex(解析 palette 选项为 #hex 格式) */ public static function theme_skin(): string { return ThemeSearch::theme_skin(); } /** 获取暗色模式独立主题色 */ public static function dark_primary_color(): string { return ThemeSearch::dark_primary_color(); } /** 获取主题切换按钮显示位置列表 */ public static function get_theme_mode_button_positions(): array { return ThemeSearch::get_theme_mode_button_positions(); } /** 获取最终生效的主题色(skin 优先于 custom primary_color) */ public static function resolved_primary_color(): string { return ThemeSearch::resolved_primary_color(); } /** 获取全局圆角 */ public static function border_radius(): int { return ThemeSearch::border_radius(); } /** 获取卡片圆角值(独立设置优先,否则 border_radius + 4) */ public static function card_radius(): int { return ThemeSearch::card_radius(); } /** 全站加载动画开关 */ public static function is_qj_loading_enabled(): bool { return ThemeSearch::is_qj_loading_enabled(); } /** 加载动画样式 (no1–no10) */ public static function get_qj_loading_style(): string { return ThemeSearch::get_qj_loading_style(); } /** 获取内容最大宽度 */ public static function container_max_width(): int { return ThemeSearch::container_max_width(); } /** 获取全局字体方案 */ public static function font_family(): string { return ThemeSearch::font_family(); } /** * 获取代码高亮配置 * * @return array */ public static function get_code_highlight_config(): array { return ThemeSearch::get_code_highlight_config(); } /** * 获取系统公告配置 * * @return array */ public static function get_system_notice_config(): array { return ThemeSearch::get_system_notice_config(); } /** * 获取侧边栏配置 * * @return array */ public static function get_sidebar_config(): array { return ThemeSearch::get_sidebar_config(); } /** * 获取多语言翻译配置 * * @return array */ public static function get_i18n_config(): array { return ThemeSearch::get_i18n_config(); } /** * Public user-home display settings. * * @return array */ public static function get_user_home_settings(): array { return UserRuntime::get_user_home_settings(); } /** * Canonical avatar, cover, and signature settings. * * @return array{avatar_upload_s:bool,avatar_external:string,avatar_default_img:string,user_cover_upload_s:bool,user_cover_img:string,user_desc_std:string} */ public static function get_user_feature_settings(): array { return UserRuntime::get_user_feature_settings(); } /** * Private user-center display settings. * * @return array{tabs:string[]} */ public static function get_user_center_settings(): array { return UserRuntime::get_user_center_settings(); } /** * User identity, level, badge, and report governance settings. * * @return array{ * verify:array{enabled:bool,public_display:bool,badge_text:string,accept_email_verified:bool,require_manual_review:bool}, * level:array{enabled:bool,public_display:bool,source:string,label_prefix:string,thresholds:array}, * badge:array{enabled:bool,public_display:bool,limit:int,dictionary:array}, * report:array{enabled:bool,public_entry:bool,public_notice:bool,ban_notice_text:string,categories:array} * } */ public static function get_user_identity_settings(): array { return UserRuntime::get_user_identity_settings(); } /** @return array */ public static function get_identity_verification_settings(): array { return \AKSRT\Identity\SettingsRuntime::get(); } /** @return array */ public static function get_identity_provider_secrets(string $provider): array { return \AKSRT\Identity\SecretStore::get($provider); } /** @param array $changes */ public static function update_identity_provider_secrets(string $provider, array $changes): bool { return \AKSRT\Identity\SecretStore::update($provider, $changes); } /** @return array */ public static function get_identity_provider_secret_status(string $provider): array { return \AKSRT\Identity\SecretStore::status($provider); } /** * Remove secrets from settings export and backup payloads. * * @param array $payload * @return array */ public static function redact_sensitive_settings(array $payload): array { if (isset($payload['standalone']) && is_array($payload['standalone'])) { foreach (self::SECRET_OPTION_KEYS as $option_key) { unset($payload['standalone'][$option_key]); } } return $payload; } /** * Ignore secret options and redacted placeholders during import. * * @param array $standalone * @return array */ public static function filter_sensitive_import(array $standalone): array { foreach (self::SECRET_OPTION_KEYS as $option_key) { unset($standalone[$option_key]); } return $standalone; } /** * legacy 9.0 post-list display settings. * * @return array */ public static function get_post_list_style_settings(): array { return PostDisplay::get_post_list_style_settings(); } /** * Post-list thumbnail policy settings. * * @return array */ public static function get_post_thumb_settings(): array { return PostDisplay::get_post_thumb_settings(); } /** * Post-list filter toolbar settings. * * @return array{enabled:bool,categories:bool,tags:bool,sort:bool} */ public static function get_post_filter_settings(): array { return PostDisplay::get_post_filter_settings(); } /** * Get custom filter definitions for a specific category. * Finds the matching cat_custom_filter binding, falls back to global custom_filter. * * @param int $cat_id Category term ID. * @return array{dimensions: array, show_cat: bool, show_tag: bool, show_orderby: bool} */ public static function get_filter_config_for_category(int $cat_id): array { return PostDisplay::get_filter_config_for_category($cat_id); } /** * Front submit settings. * * @return array{enabled:bool,btn_text:string,title_min:int,title_max:int} */ public static function get_submit_settings(): array { return PostDisplay::get_submit_settings(); } /** * Comment display and behavior settings. * * @return array{order:string,pagination_mode:string,nested_depth:int,require_login:bool,avatar_size:int,empty_text:string} */ public static function get_comment_display_settings(): array { return PostDisplay::get_comment_display_settings(); } public static function get_withdrawal_settings(): array { return PaymentRuntime::get_withdrawal_settings(); } /** * pre_get_posts: apply post_list_per_page on archive/tag/category/search/home pages. * * Overrides WP Settings > Reading "posts per page" for list views. */ public static function apply_list_per_page($query): void { PostDisplay::apply_list_per_page($query); } /** 获取友链列表 */ public static function get_friend_links(): array { return DisplayRuntime::get_friend_links(); } /** 保存友链 */ public static function save_friend_links(array $links): void { DisplayRuntime::save_friend_links($links); } /** 获取微信公众号登录完整配置。 */ public static function get_weixingzh_settings(): array { return Integration::get_weixingzh_settings(); } // ============================================ // 底部信息配置 // ============================================ /** * 获取页面&显示中的页脚配置。 * @return array */ public static function get_footer_settings(): array { return HomeCms::get_footer_settings(); } /** * 获取页脚布局模板。 */ public static function get_footer_template(): string { return HomeCms::get_footer_template(); } /** * 获取页脚品牌列(第一列)配置 * @return array {m_s, img, img_dark, title, custom_code} */ public static function get_footer_brand_settings(): array { return HomeCms::get_footer_brand_settings(); } /** * 获取页脚扩展联系方式配置 * @return array {m_s, wechat_img, qq, weibo, email, more, code_1, code_2} */ public static function get_footer_contact_extended_settings(): array { return HomeCms::get_footer_contact_extended_settings(); } /** * 获取页脚二维码图片组(第三列) * @return array {m_s, items: [{text, img}]} */ public static function get_footer_mini_img_settings(): array { return HomeCms::get_footer_mini_img_settings(); } /** * 获取页脚底部自定义代码 */ public static function get_footer_customize_code(): string { return HomeCms::get_footer_customize_code(); } /** 获取审核配置 */ public static function get_moderation(): array { return ExtensionRuntime::get_moderation(); } // ============================================ // 文章布局配置 // ============================================ /** * 获取归档布局模式。 * * @return string card|list */ public static function get_archive_layout(): string { return PostDisplay::get_archive_layout(); } /** * 获取文章列表分页模式 * @return string numbered|load_more|infinite */ public static function get_post_pagination_mode(): string { return PostDisplay::get_post_pagination_mode(); } /** * 获取评论列表分页模式 * @return string numbered|load_more|infinite */ public static function get_comment_pagination_mode(): string { return PostDisplay::get_comment_pagination_mode(); } // ============================================ // CMS 配置 // ============================================ /** * 获取站点全局风格。 * * v4 起主题统一为 CMS / 资源站形态,恒返回 'cms'。 * 保留方法签名以兼容旧调用。 * * @return string 始终为 'cms' */ public static function get_site_profile(): string { return HomeCms::get_site_profile(); } /** * CMS 功能开关(合并默认值)。 * @return array */ public static function get_cms_features(): array { return HomeCms::get_cms_features(); } /** * 单项 CMS 功能开关读取。 */ public static function cms_feature(string $key, $default = null) { return HomeCms::cms_feature($key, $default); } }