fix(runtime): 按参考主题硬切换为 loader/main/auto_fun 单一 DOM 生命周期

- 删除 AksrtFrontend registry/rehydrate 双路架构及 build/public.js 拼包入口,
  前台唯一初始路径为 PHP 本地栈(jQuery 1.9.1 → Bootstrap 3.4.1)
  → loader_js(_win/aksrtData 唯一注入)→ tbquire(['main']) → runtime/main.min.js
- window.auto_fun = debounce(z_auto_fun, 100) 为唯一重扫入口;所有模块改为
  执行一次 + off/on('auto_fun.aksrt-*') 命名空间重扫,data/class 标记幂等
- 局部更新协议统一:HTML 注入 → post_ajax.ed → auto_fun();
  远程 modal → loaded.bs.modal → auto_fun();JSON 成功 → zib_ajax.success
- 灯箱恢复 Miniimgbox/imgbox 唯一 owner(imgbox-container、a[data-imgbox]、
  imgbox_data),删除 AksrtLightbox/data-aksrt-lightbox 第二实现及 CSS/overlay,
  _win.imgbox* 重新接上 post-display 设置
- 死代码清理:runtime 下 11 组被自有实现替代的旧模块副本、无消费 vendored 库、
  顶层 grade.min.js、revenue.js、无调用方的 aksrt_get_win_runtime_config(),
  以及 loader 中 16 条死 mapping
- PHP 入队改为本地栈 + loader_js,routed/widget/submit 依赖统一换绑;
  用户卡片发布按钮恢复 nav_user_newposts_btn 设置门控
- 测试对齐:新增 frontend-lifecycle-contract,重写 navigation/lazyload/toast/
  auth-source/comment/page-display/post-visual 等断言为目标架构契约

验证:node --test widget-system+navigation 223 通过 0 失败;
构建脚本重建 main/imgbox min 与 CSS bundles;改动 PHP php -l、JS node --check
全部通过;git diff --check 干净;credits 重入 harness 通过。
This commit is contained in:
2026-09-03 12:44:31 +08:00
parent 1cd81fb61a
commit 5fd7c212ed
124 changed files with 2128 additions and 17328 deletions
+42 -42
View File
@@ -135,7 +135,7 @@ trait ScriptsPart1c {
$requirements['needs_breadcrumb'] = $is_article && !empty($settings['breadcrumbs']);
$requirements['needs_comments'] = $has_comments;
$requirements['needs_comment_tools'] = $can_use_comment_form;
$requirements['needs_page_template'] = !empty($settings['maxheight_enabled']);
$requirements['needs_page_template'] = !empty($settings['lightbox']) || !empty($settings['maxheight_enabled']);
$requirements['needs_reward'] = $is_article && !empty($settings['rewards_enabled']);
$requirements['needs_yiyan'] = $has_yiyan;
$requirements['needs_share'] = $is_article && !empty($settings['share_enabled']);
@@ -151,43 +151,43 @@ trait ScriptsPart1c {
$runtime_uri = $base_uri . '/assets';
$runtime_main_path = get_template_directory() . '/assets/js/runtime/main.min.js';
$runtime_version = file_exists($runtime_main_path) ? (string) filemtime($runtime_main_path) : $version;
$public_runtime_path = get_template_directory() . '/assets/js/build/public.js';
$loader_path = get_template_directory() . '/assets/js/runtime/loader.js';
$bootstrap_path = get_template_directory() . '/assets/js/runtime/libs/bootstrap.min.js';
$post_page_settings = class_exists('\AKSRT\Settings\Settings')
? \AKSRT\Settings\Settings::get_post_page_settings()
: [];
$lightbox_enabled = !isset($post_page_settings['lightbox']) || !empty($post_page_settings['lightbox']);
$lightbox_settings = [
'imgbox' => $lightbox_enabled,
'imgbox_thumbs' => $lightbox_enabled && (!isset($post_page_settings['lightbox_thumbs']) || !empty($post_page_settings['lightbox_thumbs'])),
'imgbox_zoom' => $lightbox_enabled && (!isset($post_page_settings['lightbox_zoom']) || !empty($post_page_settings['lightbox_zoom'])),
'imgbox_full' => $lightbox_enabled && (!isset($post_page_settings['lightbox_full']) || !empty($post_page_settings['lightbox_full'])),
'imgbox_play' => $lightbox_enabled && !empty($post_page_settings['lightbox_play']),
'imgbox_down' => $lightbox_enabled && !empty($post_page_settings['lightbox_down']),
];
$lightbox_on = !isset($post_page_settings['lightbox']) || !empty($post_page_settings['lightbox']);
wp_enqueue_script(
'aksrt-runtime',
$base_uri . '/assets/js/build/public.js',
'bootstrap',
$base_uri . '/assets/js/runtime/libs/bootstrap.min.js',
['jquery'],
file_exists($public_runtime_path) ? (string) filemtime($public_runtime_path) : $version,
'3.4.1',
true
);
wp_enqueue_script(
'loader_js',
$base_uri . '/assets/js/runtime/loader.js',
['jquery', 'bootstrap'],
file_exists($loader_path) ? (string) filemtime($loader_path) : $version,
true
);
wp_localize_script(
'aksrt-runtime',
'loader_js',
'_win',
[
'views' => '',
'www' => home_url('/'),
'uri' => $runtime_uri,
'ver' => $runtime_version,
'pay_mark' => '¥',
'pay_currency_unit' => __('元', 'aksrt'),
'imgbox' => $lightbox_settings['imgbox'],
'imgbox_thumbs' => $lightbox_settings['imgbox_thumbs'],
'imgbox_zoom' => $lightbox_settings['imgbox_zoom'],
'imgbox_full' => $lightbox_settings['imgbox_full'],
'imgbox_play' => $lightbox_settings['imgbox_play'],
'imgbox_down' => $lightbox_settings['imgbox_down'],
'pay_mark' => '¥',
'pay_currency_unit' => __('元', 'aksrt'),
'imgbox' => $lightbox_on,
'imgbox_type' => 'group',
'imgbox_thumbs' => $lightbox_on && (!isset($post_page_settings['lightbox_thumbs']) || !empty($post_page_settings['lightbox_thumbs'])),
'imgbox_zoom' => $lightbox_on && (!isset($post_page_settings['lightbox_zoom']) || !empty($post_page_settings['lightbox_zoom'])),
'imgbox_full' => $lightbox_on && (!isset($post_page_settings['lightbox_full']) || !empty($post_page_settings['lightbox_full'])),
'imgbox_play' => $lightbox_on && !empty($post_page_settings['lightbox_play']),
'imgbox_down' => $lightbox_on && !empty($post_page_settings['lightbox_down']),
'ajax_url' => admin_url('admin-ajax.php'),
'ajaxpager' => '',
'ajax_trigger' => __('加载更多', 'aksrt'),
@@ -228,7 +228,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-ajax-debug',
$base_uri . '/assets/js/core/ajax-debug.js',
['aksrt-runtime'],
['loader_js'],
file_exists($ajax_debug_path) ? (string) filemtime($ajax_debug_path) : $version,
true
);
@@ -240,7 +240,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-precode',
$base_uri . '/assets/js/precode.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($precode_js),
true
);
@@ -255,7 +255,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-input-expand',
$base_uri . '/assets/js/input-expand.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($input_expand_js),
true
);
@@ -267,7 +267,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-section-navs',
$base_uri . '/assets/js/section-navs.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($section_navs_js),
true
);
@@ -279,7 +279,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-video-player',
$base_uri . '/assets/js/video-player.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($video_player_js),
true
);
@@ -291,7 +291,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-reward',
$base_uri . '/assets/js/reward.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($reward_js),
true
);
@@ -303,7 +303,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-yiyan',
$base_uri . '/assets/js/yiyan.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($yiyan_js),
true
);
@@ -350,7 +350,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-site-notice',
$base_uri . '/assets/js/site-notice.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($site_notice_js),
true
);
@@ -362,7 +362,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-auth',
$base_uri . '/assets/js/auth.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($auth_js),
true
);
@@ -373,7 +373,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-homepage-fixed',
$base_uri . '/assets/js/homepage-fixed.js',
['aksrt-runtime'],
['loader_js'],
file_exists($homepage_js_path) ? (string) filemtime($homepage_js_path) : $version,
true
);
@@ -387,7 +387,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-comment-tools',
$base_uri . '/assets/js/comment-tools.js',
['aksrt-runtime'],
['loader_js'],
file_exists($comment_tools_path) ? (string) filemtime($comment_tools_path) : $version,
true
);
@@ -410,7 +410,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-comment-ajax',
$base_uri . '/assets/js/comment-ajax.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($comment_ajax_path),
true
);
@@ -423,7 +423,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-page-template',
$base_uri . '/assets/js/page-template.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($page_template_path),
true
);
@@ -437,7 +437,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-weixin-share',
$base_uri . '/assets/js/weixin-share.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($weixin_share_path),
true
);
@@ -448,7 +448,7 @@ trait ScriptsPart1c {
wp_enqueue_script(
'aksrt-post-share',
$base_uri . '/assets/js/post-share.js',
['aksrt-runtime', 'aksrt-weixin-share', 'aksrt-share-data'],
['loader_js', 'aksrt-weixin-share', 'aksrt-share-data'],
(string) filemtime($post_share_path),
true
);
@@ -462,9 +462,9 @@ trait ScriptsPart1c {
$runtime_routes = $this->resolve_frontend_routes();
// 数据注入 - 全站统一消费 window.aksrtData
// Attach to aksrt-runtime (loaded before all core modules) so ajaxUrl/nonce
// exist before pagination/search/article handlers run.
wp_localize_script('aksrt-runtime', 'aksrtData', [
// Attach to loader_js (bootstraps runtime/main) so ajaxUrl/nonce exist
// before pagination/search/article handlers run.
wp_localize_script('loader_js', 'aksrtData', [
'ajaxUrl' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('aksrt_public_nonce'),
'restNonce' => wp_create_nonce('wp_rest'),