Files
wordpress-theme-aksrt/src/Core/ScriptsPart1b.php
T
kate522 f629a4f373 feat(icons): add the FA5 catalog, REST endpoint and unified icon helpers
Mirror the reference theme's universal picker on FA5: a generated full
catalog of the bundled FA5 Free 5.15.4 fonts (src/Icons/fa5-icons.php,
generated from the shipped CSS + SVG fonts), a zibsvg group parsed from
the runtime sprite so it cannot drift, and GET /aksrt/v1/icons/catalog.

Shared admin pieces: aksrt_icon_markup()/aksrt_sanitize_icon_value()
with an SVG allowlist, the picker field/modal assets, and one canonical
aksrt-font-awesome handle registered through aksrt_enqueue_fontawesome().
2026-09-06 12:59:03 +08:00

737 lines
30 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* @package AKSRT
*/
namespace AKSRT\Core;
defined('ABSPATH') || exit;
trait ScriptsPart1b {
public function enqueue_public(): void {
$base_uri = get_template_directory_uri();
$version = AKSRT_VERSION;
// Keep WordPress's managed jQuery so core and plugin UI scripts share one compatible API.
wp_enqueue_script('jquery');
$public_filename = file_exists(get_template_directory() . '/assets/css/build/public.min.css')
? 'public.min.css'
: 'public.css';
$public_bundle = get_template_directory() . '/assets/css/build/' . $public_filename;
wp_enqueue_style(
'bootstrap',
$base_uri . '/assets/css/bootstrap.min.css',
[],
'3.4.1'
);
aksrt_enqueue_fontawesome(['bootstrap']);
$main_css_path = get_template_directory() . '/assets/css/main.min.css';
wp_enqueue_style(
'aksrt-main',
$base_uri . '/assets/css/main.min.css',
['aksrt-font-awesome'],
file_exists($main_css_path) ? (string) filemtime($main_css_path) : $version
);
wp_enqueue_style(
'aksrt-public',
$base_uri . '/assets/css/build/' . $public_filename,
['aksrt-main'],
file_exists($public_bundle) ? (string) filemtime($public_bundle) : $version
);
$lazy_animation = class_exists('\AKSRT\Settings\Settings')
? (string) \AKSRT\Settings\Settings::get_value('lazy_animation', 'blur')
: 'blur';
if ($lazy_animation === 'fade') {
wp_add_inline_style('aksrt-public', '.lazyloaded{--lazy-animation:lazy_fade!important;}');
} elseif ($lazy_animation === 'scale') {
wp_add_inline_style('aksrt-public', '.lazyloaded{--lazy-animation:lazy_scale!important;}');
}
$core_dep = 'aksrt-public';
$deps = [$core_dep];
$enqueue_module = function ($slug) use ($base_uri, $version, $deps) {
$path = get_template_directory() . '/assets/css/frontend/' . $slug . '.css';
wp_enqueue_style(
'aksrt-' . $slug,
$base_uri . '/assets/css/frontend/' . $slug . '.css',
$deps,
(file_exists($path) ? (string) filemtime($path) : $version)
);
};
// 顶部导航用户卡片(legacy header-userbox 模块样式)。
$enqueue_module('header-userbox');
if (!is_user_logged_in() || (bool) get_query_var('aksrt_sign')) {
$auth_css = get_template_directory() . '/assets/css/routes/sign.css';
wp_enqueue_style(
'aksrt-auth',
$base_uri . '/assets/css/routes/sign.css',
[$core_dep],
file_exists($auth_css) ? (string) filemtime($auth_css) : $version
);
}
// Shared VIP purchase/poll coordinator for modal and credits surfaces.
$vip_on = class_exists('\AKSRT\Settings\Settings')
&& !empty(\AKSRT\Settings\Settings::get_payment_vip_settings()['enabled']);
$credits_on = is_user_logged_in()
&& class_exists('\AKSRT\Settings\Settings')
&& \AKSRT\Settings\Settings::credits_enabled();
$balance_on = is_user_logged_in()
&& !empty(\AKSRT\Settings\Settings::get_payment_recharge_settings()['enabled']);
$affiliate_on = is_user_logged_in()
&& class_exists('\\AKSRT\\Settings\\Settings')
&& !empty(\AKSRT\Settings\Settings::get_affiliate_settings()['enabled']);
$signin_on = is_user_logged_in()
&& class_exists('\AKSRT\Credits\Signin')
&& class_exists('\AKSRT\Settings\Settings')
&& !empty(\AKSRT\Settings\Settings::get_signin_reward_settings()['enabled']);
$vip_coordinator = get_template_directory() . '/assets/js/vip-purchase-coordinator.js';
if ((($vip_on && is_user_logged_in()) || $credits_on || $affiliate_on) && file_exists($vip_coordinator)) {
wp_enqueue_script(
'aksrt-vip-coordinator',
$base_uri . '/assets/js/vip-purchase-coordinator.js',
['loader_js'],
(string) filemtime($vip_coordinator),
true
);
}
// VIP modal (legacy .pay-vip)
if ($vip_on && is_user_logged_in()) {
$vip_css = get_template_directory() . '/assets/css/frontend/vip-modal.css';
if (file_exists($vip_css)) {
wp_enqueue_style(
'aksrt-vip-modal',
$base_uri . '/assets/css/frontend/vip-modal.css',
[$core_dep],
(string) filemtime($vip_css)
);
}
$vip_js = get_template_directory() . '/assets/js/pay-vip.js';
if (file_exists($vip_js)) {
wp_enqueue_script(
'aksrt-pay-vip',
$base_uri . '/assets/js/pay-vip.js',
['loader_js', 'aksrt-vip-coordinator'],
(string) filemtime($vip_js),
true
);
}
}
// 4b. 路由判定
$is_home_or_archive = is_home() || is_front_page() || is_archive() || is_search();
// 资源单页(post + _aksrt_is_resource)
$is_single_resource = (function_exists('aksrt_is_resource_post') && is_singular() && aksrt_is_resource_post(get_queried_object_id()));
// 普通博客 single(排除资源型 post)
$is_single_post = is_singular('post') && !$is_single_resource;
// 付费下载/付费墙:任意 singular 需收银台/下载脚本
$is_paid_content_single = false;
if (is_singular()) {
$qid = (int) get_queried_object_id();
if ($qid > 0) {
if (function_exists('aksrt_is_downloadable_content') && aksrt_is_downloadable_content($qid)) {
$is_paid_content_single = true;
} elseif (function_exists('aksrt_is_paid_post') && aksrt_is_paid_post($qid)) {
$is_paid_content_single = true;
} elseif (function_exists('aksrt_get_pay_meta')) {
$pm = aksrt_get_pay_meta($qid);
$pt = (string) ($pm['pay_type'] ?? 'no');
$is_paid_content_single = ($pt !== '' && $pt !== 'no');
}
}
}
// 独立下载页模板
$is_download_file_page = is_page_template('templates/pages/page-download-file.php');
// 资源虚拟列表 /resources/
$is_resource_archive = function_exists('aksrt_is_resource_archive') && aksrt_is_resource_archive();
// /user/{nicename}/ 自定义重写路由(class-aksrt-user.php 注册)
// 此路径下 is_page() / is_page_template() 均为 false,需手动识别以正确入队 CSS
$is_profile_route = (bool) get_query_var('aksrt_author_identifier');
$is_user_center_route = (bool) get_query_var('aksrt_user_center');
$is_static_page = is_page() || is_singular('page') || $is_profile_route || $is_user_center_route;
$is_auth_route = (bool) get_query_var('aksrt_sign');
$is_auth_page = $is_auth_route
|| (function_exists('aksrt_is_auth_page_request') && aksrt_is_auth_page_request());
$is_profile_page = $is_profile_route
|| (function_exists('aksrt_is_user_home_page') && aksrt_is_user_home_page())
|| (function_exists('aksrt_is_user_center_page') && aksrt_is_user_center_page())
|| is_page_template('templates/pages/page-profile.php')
|| is_page_template('templates/pages/page-user-home.php');
$is_fixed_homepage = function_exists('aksrt_is_fixed_homepage_request') && aksrt_is_fixed_homepage_request();
// CMS route detection.
$is_cms_mode = function_exists('aksrt_is_cms_mode') ? aksrt_is_cms_mode() : false;
$singular_assets = $this->resolve_singular_asset_requirements(
$is_single_post,
$is_single_resource,
$is_paid_content_single
);
if (!empty($singular_assets['needs_print'])) {
$print_path = get_template_directory() . '/assets/css/frontend/print.css';
wp_enqueue_style(
'aksrt-print',
$base_uri . '/assets/css/frontend/print.css',
[],
file_exists($print_path) ? (string) filemtime($print_path) : $version,
'print'
);
}
// 首页/归档/搜索:卡片 + 侧栏
if ($is_home_or_archive && !$is_fixed_homepage) {
$enqueue_module('post-card');
$enqueue_module('sidebar');
$enqueue_module('breadcrumb');
}
// Normal articles: one small core bundle plus content/settings-driven feature leaves.
if ($is_single_post && !empty($singular_assets['is_article'])) {
$single_filename = file_exists(get_template_directory() . '/assets/css/build/single.min.css')
? 'single.min.css'
: 'single.css';
$single_path = get_template_directory() . '/assets/css/build/' . $single_filename;
wp_enqueue_style(
'aksrt-single-core',
$base_uri . '/assets/css/build/' . $single_filename,
[$core_dep],
file_exists($single_path) ? (string) filemtime($single_path) : $version
);
$single_features = [
'has_code' => 'single-post/code-blocks',
'needs_navigation' => 'single-post/navigation',
'needs_cover' => 'single-post/cover',
'needs_related_toc' => 'single-post/related-toc',
'has_hidden_content' => 'single-post/hidden-content',
'needs_pay_box' => 'pay-box',
];
$single_feature_handles = [];
foreach ($single_features as $requirement => $part) {
if (empty($singular_assets[$requirement])) {
continue;
}
$path = get_template_directory() . '/assets/css/frontend/' . $part . '.css';
if (!file_exists($path)) {
continue;
}
$handle = 'aksrt-' . str_replace('/', '-', $part);
wp_enqueue_style(
$handle,
$base_uri . '/assets/css/frontend/' . $part . '.css',
['aksrt-single-core'],
(string) filemtime($path)
);
$single_feature_handles[] = $handle;
}
// Preserve the public aggregate handle without requesting its @import file.
wp_register_style(
'aksrt-single-post',
false,
array_merge(['aksrt-single-core'], $single_feature_handles),
$version
);
wp_enqueue_style('aksrt-single-post');
if (!empty($singular_assets['needs_post_card'])) {
$enqueue_module('post-card');
}
if (!empty($singular_assets['needs_sidebar'])) {
$enqueue_module('sidebar');
}
if (!empty($singular_assets['needs_breadcrumb'])) {
$enqueue_module('breadcrumb');
}
}
// 评论区样式(硬切换后全部自有):任何会渲染评论区的 singular
// (普通文章 / 资源型 post / 启用评论的页面)统一加载 build 聚合。
// 缺失时手机端 .mobile-fixed 抽屉规则不生效,表单会按文档流直接显示。
if (is_singular() && !empty($singular_assets['needs_comments'])) {
$comments_filename = file_exists(get_template_directory() . '/assets/css/build/comments.min.css')
? 'comments.min.css'
: 'comments.css';
$comments_path = get_template_directory() . '/assets/css/build/' . $comments_filename;
wp_enqueue_style(
'aksrt-comments',
$base_uri . '/assets/css/build/' . $comments_filename,
[$core_dep],
file_exists($comments_path) ? (string) filemtime($comments_path) : $version
);
}
// 静态页面 + 用户中心 + 友链等
if ($is_static_page) {
$enqueue_module('pages');
$enqueue_module('single-post'); // 复用 entry-content 排版
$enqueue_module('post-card'); // post-grid / post-card(用户中心文章列表)
$enqueue_module('breadcrumb');
// 评论区样式由上方 is_singular 统一入口按 needs_comments 加载。
}
// 用户中心 / 公开主页:路由专属 CSS
if ($is_profile_page) {
// 举报脚本(用户主页和个人中心均需要)
$report_js_path = get_template_directory() . '/assets/js/report.js';
if (file_exists($report_js_path)) {
wp_enqueue_script(
'aksrt-report',
$base_uri . '/assets/js/report.js',
['loader_js'],
filemtime($report_js_path) ?: $version,
true
);
}
// 关注脚本已在全局栈注册(ScriptsPart1c),data-aksrt-follow 按钮
// 也渲染于文章页作者栏与各处用户卡片,不能仅限本路由加载。
$author_js_path = get_template_directory() . '/assets/js/author.js';
if (file_exists($author_js_path)) {
wp_enqueue_script(
'aksrt-author',
$base_uri . '/assets/js/author.js',
['loader_js'],
(string) filemtime($author_js_path),
true
);
}
// Enqueue every profile leaf directly. Nested @imports are not versioned,
// so browsers can otherwise retain stale layout/modal rules after deploys.
$profile_parts = ['layout', 'lists', 'modals'];
$profile_deps = [$core_dep];
foreach ($profile_parts as $part_index => $part) {
$part_path = get_template_directory() . '/assets/css/routes/profile/' . $part . '.css';
$is_last_part = $part_index === count($profile_parts) - 1;
$part_handle = $is_last_part ? 'aksrt-route-profile' : 'aksrt-route-profile-' . $part;
wp_enqueue_style(
$part_handle,
$base_uri . '/assets/css/routes/profile/' . $part . '.css',
$profile_deps,
file_exists($part_path) ? (string) filemtime($part_path) : $version
);
$profile_deps = [$part_handle];
}
// 本人中心 vs 公开主页拆分加载
$is_public_user_home = $is_profile_route
|| (function_exists('aksrt_is_user_home_page') && aksrt_is_user_home_page())
|| is_page_template('templates/pages/page-user-home.php');
if ($is_public_user_home) {
// /user/{nicename}/ 公开主页
$user_home_css_path = get_template_directory() . '/assets/css/routes/user-home.css';
wp_enqueue_style(
'aksrt-route-user-home',
$base_uri . '/assets/css/routes/user-home.css',
['aksrt-route-profile'],
file_exists($user_home_css_path) ? (string) filemtime($user_home_css_path) : $version
);
} else {
// Keep the legacy aggregate's cascade order, but give every leaf its
// own cache version. The final leaf retains the public aggregate handle.
$user_center_parts = [
'user-center/shell',
'user-center/credits',
'user-center/vip',
'user-center/level',
'user-center/settings',
'revenue',
'user-center/revenue',
'user-center/revenue-earnings',
'user-center/responsive',
];
$user_center_deps = ['aksrt-route-profile'];
foreach ($user_center_parts as $part_index => $part) {
$part_path = get_template_directory() . '/assets/css/routes/' . $part . '.css';
$is_last_part = $part_index === count($user_center_parts) - 1;
$part_handle = $is_last_part
? 'aksrt-route-user-center'
: 'aksrt-route-' . str_replace('/', '-', $part);
wp_enqueue_style(
$part_handle,
$base_uri . '/assets/css/routes/' . $part . '.css',
$user_center_deps,
file_exists($part_path) ? (string) filemtime($part_path) : $version
);
$user_center_deps = [$part_handle];
}
// Orders is a lazy user-center panel, so its independent assets must
// be ready before client-side panel replacement can insert its markup.
$has_orders_panel = false;
if (class_exists('\AKSRT\User\Center')) {
$dashboard_tabs = \AKSRT\User\Center::get_instance()->get_dashboard_tabs();
$has_orders_panel = isset($dashboard_tabs['orders']);
}
if ($has_orders_panel) {
$orders_css = get_template_directory() . '/assets/css/routes/orders.css';
if (file_exists($orders_css)) {
wp_enqueue_style(
'aksrt-orders',
$base_uri . '/assets/css/routes/orders.css',
[$core_dep],
(string) filemtime($orders_css)
);
}
$order_center_js = get_template_directory() . '/assets/js/order-center.js';
if (file_exists($order_center_js)) {
wp_enqueue_script(
'aksrt-order-center',
$base_uri . '/assets/js/order-center.js',
['loader_js'],
(string) filemtime($order_center_js),
true
);
}
}
$identity_js = get_template_directory() . '/assets/js/routes/user-center-auth.js';
if (file_exists($identity_js)) {
wp_enqueue_script(
'aksrt-route-user-center-auth',
$base_uri . '/assets/js/routes/user-center-auth.js',
['loader_js'],
(string) filemtime($identity_js),
true
);
}
$user_center_deps = file_exists($identity_js)
? ['loader_js', 'aksrt-route-user-center-auth']
: ['loader_js'];
if ($has_orders_panel && wp_script_is('aksrt-order-center', 'registered')) {
$user_center_deps[] = 'aksrt-order-center';
}
wp_enqueue_script(
'aksrt-route-user-center',
$base_uri . '/assets/js/routes/user-center.js',
$user_center_deps,
file_exists(get_template_directory() . '/assets/js/routes/user-center.js')
? (string) filemtime(get_template_directory() . '/assets/js/routes/user-center.js')
: $version,
true
);
}
}
// 搜索结果页:路由专属 CSS(顶部卡片/胶囊搜索框/工具栏/空状态/关键词高亮)
if (is_search()) {
wp_enqueue_style(
'aksrt-route-search',
$base_uri . '/assets/css/routes/search.css',
['aksrt-public', 'aksrt-post-card'],
$version
);
}
// 分类汇总页:路由专属 CSS
if (is_page_template('templates/pages/page-categories.php')) {
wp_enqueue_style(
'aksrt-route-categories',
$base_uri . '/assets/css/routes/categories.css',
['aksrt-public'],
$version
);
}
// 友情链接页:路由专属 CSS
if (is_page_template('templates/pages/page-friends.php')) {
wp_enqueue_style(
'aksrt-route-friends',
$base_uri . '/assets/css/routes/friends.css',
['aksrt-public'],
file_exists(get_template_directory() . '/assets/css/routes/friends.css')
? (string) filemtime(get_template_directory() . '/assets/css/routes/friends.css')
: $version
);
}
// 网址导航页(legacy links.php)
// 文章导航页(legacy postsnavs.php)
if (is_page_template('templates/pages/page-posts-navs.php')) {
$page_navs_js = get_template_directory() . '/assets/js/page-navs.js';
if (file_exists($page_navs_js)) {
wp_enqueue_script(
'aksrt-page-navs',
$base_uri . '/assets/js/page-navs.js',
['loader_js'],
(string) filemtime($page_navs_js),
true
);
}
$pn_css = get_template_directory() . '/assets/css/routes/posts-navs.css';
if (file_exists($pn_css)) {
wp_enqueue_style(
'aksrt-route-posts-navs',
$base_uri . '/assets/css/routes/posts-navs.css',
['aksrt-public'],
(string) filemtime($pn_css)
);
}
$section_navs = get_template_directory() . '/assets/js/section-navs.js';
if (file_exists($section_navs)) {
wp_enqueue_script(
'aksrt-section-navs',
$base_uri . '/assets/js/section-navs.js',
['jquery'],
(string) filemtime($section_navs),
true
);
}
$pn_js = get_template_directory() . '/assets/js/posts-navs-page.js';
if (file_exists($pn_js)) {
wp_enqueue_script(
'aksrt-posts-navs-page',
$base_uri . '/assets/js/posts-navs-page.js',
['loader_js'],
(string) filemtime($pn_js),
true
);
}
}
// 文章归档页
if (is_page_template('templates/pages/page-archives.php')) {
$ar_css = get_template_directory() . '/assets/css/routes/archives.css';
if (file_exists($ar_css)) {
wp_enqueue_style(
'aksrt-route-archives',
$base_uri . '/assets/css/routes/archives.css',
['aksrt-public'],
(string) filemtime($ar_css)
);
}
}
// 禁封申诉页
if (is_page_template('templates/pages/page-ban-appeal.php')) {
$ba_css = get_template_directory() . '/assets/css/routes/ban-appeal.css';
if (file_exists($ba_css)) {
wp_enqueue_style(
'aksrt-route-ban-appeal',
$base_uri . '/assets/css/routes/ban-appeal.css',
['aksrt-public'],
(string) filemtime($ba_css)
);
}
$ba_js = get_template_directory() . '/assets/js/ban-appeal-page.js';
if (file_exists($ba_js)) {
wp_enqueue_script(
'aksrt-ban-appeal-page',
$base_uri . '/assets/js/ban-appeal-page.js',
['loader_js'],
(string) filemtime($ba_js),
true
);
}
}
// 消息中心页
if (get_query_var('aksrt_message_view')) {
$messages_css = get_template_directory() . '/assets/css/frontend/messages.css';
if (file_exists($messages_css)) {
wp_enqueue_style(
'aksrt-messages',
$base_uri . '/assets/css/frontend/messages.css',
['aksrt-public'],
(string) filemtime($messages_css)
);
}
$messages_js = get_template_directory() . '/assets/js/messages.js';
if (file_exists($messages_js)) {
wp_enqueue_script(
'aksrt-messages',
$base_uri . '/assets/js/messages.js',
['loader_js'],
(string) filemtime($messages_js),
true
);
}
}
// Unified share-data builder — only when the article renders share controls.
if (!empty($singular_assets['needs_share'])) {
$share_data_js = get_template_directory() . '/assets/js/share-data-builder.js';
if (file_exists($share_data_js)) {
wp_enqueue_script(
'aksrt-share-data',
$base_uri . '/assets/js/share-data-builder.js',
['loader_js'],
(string) filemtime($share_data_js),
true
);
}
}
// Poster generation is part of the article share dropdown.
if (!empty($singular_assets['needs_share'])) {
$poster_js = get_template_directory() . '/assets/js/poster-share.js';
if (file_exists($poster_js)) {
wp_enqueue_script(
'aksrt-poster-share',
$base_uri . '/assets/js/poster-share.js',
['loader_js', 'aksrt-share-data'],
(string) filemtime($poster_js),
true
);
}
}
// Unified authentication page shell.
if ($is_auth_page) {
$enqueue_module('pages');
}
// 404 页面
if (is_404()) {
$enqueue_module('pages');
}
// Resource archives use the canonical legacy article-card stylesheet.
if ($is_resource_archive || $is_single_resource || ($is_cms_mode && ($is_home_or_archive || $is_static_page) && !$is_fixed_homepage)) {
if (!$is_home_or_archive && !$is_single_post && !$is_static_page) {
$enqueue_module('post-card');
}
}
// 单篇资源专属样式
if ($is_single_resource) {
$enqueue_module('single-post');
// 资源单页同样渲染文章封面(needs_cover 对资源文章同样成立)。
// cover 样式必须以 filemtime 版本号的 leaf 直接入队:聚合文件的
// @import 无版本号,浏览器会拿旧缓存(含已废弃的 .single-cover
// padding 规则)把封面高度链挤成 0,导致封面空白。
if (!empty($singular_assets['needs_cover'])) {
$single_cover_path = get_template_directory() . '/assets/css/frontend/single-post/cover.css';
if (file_exists($single_cover_path)) {
wp_enqueue_style(
'aksrt-single-post-cover',
$base_uri . '/assets/css/frontend/single-post/cover.css',
$deps,
(string) filemtime($single_cover_path)
);
}
}
$resource_meta_path = get_template_directory() . '/assets/css/frontend/resource-meta/part.css';
wp_enqueue_style(
'aksrt-resource-meta',
$base_uri . '/assets/css/frontend/resource-meta/part.css',
$deps,
file_exists($resource_meta_path) ? (string) filemtime($resource_meta_path) : $version
);
// 评论区样式由统一入口按 needs_comments 加载。
}
// 资源归档专属样式
if ($is_resource_archive) {
$enqueue_module('resource-archive');
}
// 单篇资源 / 付费内容 / 独立下载页:下载 + 收银台脚本
if ($is_single_resource || $is_paid_content_single || $is_download_file_page) {
$cms_download_css_path = get_template_directory() . '/assets/css/frontend/cms-download.css';
wp_enqueue_style(
'aksrt-cms-download',
$base_uri . '/assets/css/frontend/cms-download.css',
[$core_dep],
file_exists($cms_download_css_path) ? (string) filemtime($cms_download_css_path) : $version
);
$cms_download_js_path = get_template_directory() . '/assets/js/cms-download.js';
wp_enqueue_script(
'aksrt-cms-download',
$base_uri . '/assets/js/cms-download.js',
['loader_js'],
file_exists($cms_download_js_path) ? (string) filemtime($cms_download_js_path) : $version,
true
);
}
if ($is_fixed_homepage) {
$homepage_filename = file_exists(get_template_directory() . '/assets/css/build/homepage.min.css')
? 'homepage.min.css'
: 'homepage.css';
$homepage_bundle = get_template_directory() . '/assets/css/build/' . $homepage_filename;
wp_enqueue_style(
'aksrt-homepage-fixed',
$base_uri . '/assets/css/build/' . $homepage_filename,
['aksrt-public'],
file_exists($homepage_bundle) ? (string) filemtime($homepage_bundle) : $version
);
}
// 积分相关:已登录 + 启用积分功能时全站加载
if ($credits_on || $balance_on || $affiliate_on) {
$enqueue_module('credits');
// profile 页:加载 credits.js(签到 + 邀请 + 提现交互)
if ($is_profile_page) {
$credits_js_path = get_template_directory() . '/assets/js/credits.js';
wp_enqueue_script(
'aksrt-credits',
$base_uri . '/assets/js/credits.js',
['loader_js', 'aksrt-vip-coordinator'],
file_exists($credits_js_path) ? (string) filemtime($credits_js_path) : $version,
true
);
}
}
if ($signin_on) {
$signin_js_path = get_template_directory() . '/assets/js/signin.js';
wp_enqueue_script(
'aksrt-signin',
$base_uri . '/assets/js/signin.js',
['loader_js'],
file_exists($signin_js_path) ? (string) filemtime($signin_js_path) : $version,
true
);
}
// Badges UI: user center + public profile (legacy medal modal/list).
if (class_exists('\AKSRT\User\Badges') && \AKSRT\User\Badges::enabled()) {
$is_badge_surface = $is_profile_page
|| is_author()
|| (function_exists('aksrt_is_user_home_page') && aksrt_is_user_home_page())
|| (function_exists('aksrt_is_user_center_page') && aksrt_is_user_center_page());
if ($is_badge_surface) {
$enqueue_module('medal');
$badge_actions_path = get_template_directory() . '/assets/js/user-badge-actions.js';
if (file_exists($badge_actions_path)) {
wp_enqueue_script(
'aksrt-user-badge-actions',
$base_uri . '/assets/js/user-badge-actions.js',
['loader_js'],
(string) filemtime($badge_actions_path),
true
);
}
}
}
$this->enqueue_public_fonts_js_and_data(
$base_uri,
$core_dep,
$deps,
$is_fixed_homepage,
$is_home_or_archive,
$is_single_post,
$is_single_resource,
$version,
$singular_assets
);
}
}