3.2.46: 新增 [Archives] 归档短代码 + 评论关闭时整块零输出 #15
需求一:[Archives] 短代码 —— 归档式全站文章列表
· 在文章/页面正文写一行 [Archives],该位置渲染全站文章的年月归档
· 默认显示今年,按月份归类;每篇带浏览/评论/点赞三个数
· 上下两排各有一组「上一年 / 下一年」按钮(四角),JS 切换不刷新页面
· 地址栏同步 ?arc_year=,刷新与分享链接都能保持同一年
· 只在用到短代码的页面才加载 assets/js|css/archives.js|css
· 参数:year="2025" 指定首年;month="0" 不按月分组
需求二:评论关闭时评论区整块消失
· comments.php 在**任何输出之前** `if (!comments_open()) return;`
—— 零字节,不是空容器、不是 display:none、不留提示文字
· 已有评论的老文章关评论后也不再显示(需求原话:正文之外什么都没有)
· inc/theme-comments.php 的资源守卫与之同口径:关评论时不加载
约 10KB 的 comments.css / comments.js
· 删掉 .comments-closed 样式与两处「评论已关闭」提示分支
开发中实测抓到并修掉的三个真实 bug(都是"测试把期望值写对之后"才显形):
· 年份标题 / 导航年份过了 number_format_i18n() ⇒ 输出「2,025」,
而 JS 侧 String(year) 输出「2025」⇒ 首屏与切年后不一致
· 月份标题同样过 number_format_i18n(),与 JS 侧 String(m) 口径不一致
· yang_archives_render_nav() 把 ar-nav-top 写死,而下排也调它生成
⇒ 下排被叫成 top(视觉上被更高特异性规则压住,看不出问题)
验证:
归档 _archives_unit.php 94 通过 / 0 失败
_archives_e2e.js 109 通过 / 0 失败
_archives_e2e_falsify.js 反证 25 真红 / 0 无效
_archives_unit_falsify.py 反证 6 真红 / 0 无效
评论 _comments_closed_test.php 54 通过 / 0 失败
_comments_closed_falsify.py 反证 13 真红 / 0 无效
回归 _test_comments.php 64 通过 / 0 失败
_hl_unit_run.py 24 通过 / 0 失败
全量 96 个 PHP 文件语法检查通过;包内 lint 通过
发布 已推 3.2.46 到 /theme-update/,update.json 已落 3.2.46;
服务器 wp-content/themes/kratos_yang/ 仍为 3.2.45(未覆盖)
另:把 _archives_unit.php 从 `__DIR__` 定位改为接受根目录参数,
否则它无法登记进 verify_all.sh,只能手动跑(手动跑 = 长期不跑)。
5 个新套件已登记进 verify_all.sh(2j ~ 2o)。
This commit is contained in:
@@ -744,6 +744,22 @@ function yang_comment_scripts()
|
||||
return;
|
||||
}
|
||||
|
||||
/* 3.2.46:评论关闭时 comments.php 会整块 return(一个字节都不输出),
|
||||
* 那么这套 10KB 的评论样式与脚本就**永远用不到**。
|
||||
*
|
||||
* 判据必须与 comments.php 的那个 return 同口径,否则会出现两种错:
|
||||
* · 这里判"开"、那边判"关" → 加载了资源却没有 DOM 可绑,
|
||||
* comments.js 里找 #commentform 的逻辑全部静默落空(无害但白费);
|
||||
* · 这里判"关"、那边判"开" → 评论框能显示但没样式,一眼就散架。
|
||||
* 两边都用 `comments_open()`(后者不带参数,取当前文章)。
|
||||
*
|
||||
* ⚠️ 必须放在 is_singular() 之后:在非单页上 comments_open() 没有
|
||||
* 明确的主语,WP 会退回 $post 全局,可能取到列表里最后一篇文章的
|
||||
* 状态 —— 那样判断结果没有意义。 */
|
||||
if (!comments_open(get_queried_object_id())) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* wpDiscuz 在场时**不加载**主题这套脚本与样式。
|
||||
*
|
||||
* 原因:插件会接管评论表单(换成它自己的 #wpdcom),并绑定自己的
|
||||
|
||||
Reference in New Issue
Block a user