进行了一些小修复

This commit is contained in:
2026-08-26 13:54:49 +08:00
parent ed1a47cf4e
commit d4b7ec1deb
9 changed files with 1763 additions and 80 deletions
+104 -67
View File
@@ -111,18 +111,6 @@ trait ScriptsPart1b {
}
}
// Print stylesheet — only load on singular pages
if (is_singular()) {
wp_enqueue_style(
'aksrt-print',
$base_uri . '/assets/css/frontend/print.css',
[],
$version,
'print'
);
}
// 4b. 路由判定
$is_home_or_archive = is_home() || is_front_page() || is_archive() || is_search();
// 资源单页(post + _aksrt_is_resource)
@@ -166,6 +154,23 @@ trait ScriptsPart1b {
// 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');
@@ -173,55 +178,78 @@ trait ScriptsPart1b {
$enqueue_module('breadcrumb');
}
// 单篇文章:所有 single 相关样式
if ($is_single_post) {
// Prefer discrete enqueues over CSS @import (cache-bust + parallel load).
$single_parts = [
'legacy-utilities',
'single-post/shell',
'single-post/content',
'single-post/code-blocks',
'single-post/navigation',
'single-post/cover',
'single-post/author-actions',
'single-post/related-toc',
'single-post/hidden-content',
];
$single_dep = $deps[0] ?? $core_dep;
foreach ($single_parts as $part) {
$path = get_template_directory() . '/assets/css/frontend/' . $part . '.css';
if (!file_exists($path)) {
continue;
}
wp_enqueue_style(
'aksrt-' . str_replace('/', '-', $part),
$base_uri . '/assets/css/frontend/' . $part . '.css',
is_string($single_dep) ? [$single_dep] : (array) $deps,
filemtime($path) ?: $version
);
}
// Keep aggregator handle for any third-party deps that target it.
$enqueue_module('single-post');
$enqueue_module('post-card'); // 相关推荐使用 post-card 局部样式
// Comments pack (legacy 1:1 discrete files).
$comment_parts = ['comments/shell', 'comments/mobile-item'];
$comment_dep = $deps[0] ?? $core_dep;
foreach ($comment_parts as $part) {
$path = get_template_directory() . '/assets/css/frontend/' . $part . '.css';
if (!file_exists($path)) {
continue;
}
wp_enqueue_style(
'aksrt-' . str_replace('/', '-', $part),
$base_uri . '/assets/css/frontend/' . $part . '.css',
is_string($comment_dep) ? [$comment_dep] : (array) $deps,
filemtime($path) ?: $version
);
}
$enqueue_module('comments'); // aggregator handle for third-party deps
$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',
];
$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_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,
['aksrt-single-post'],
file_exists($comments_path) ? (string) filemtime($comments_path) : $version
);
}
if (!empty($singular_assets['needs_sidebar'])) {
$enqueue_module('sidebar');
}
if (!empty($singular_assets['needs_breadcrumb'])) {
$enqueue_module('breadcrumb');
}
}
// 静态页面 + 用户中心 + 友链等
if ($is_static_page) {
@@ -516,9 +544,8 @@ trait ScriptsPart1b {
}
}
// Unified share-data builder — single payload assembler for every share
// surface (dropdown, copy, WeChat, poster). Loaded on any singular view.
if (is_singular()) {
// 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(
@@ -531,8 +558,8 @@ trait ScriptsPart1b {
}
}
// 单篇文章 — poster-share.js(海报分享按钮)
if (is_singular('post')) {
// 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(
@@ -650,7 +677,17 @@ trait ScriptsPart1b {
}
}
$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);
$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
);
}
}