laoyang
75848f2ba2
3.2.53 后台小工具页恢复传统拖放面板(#23)
现象:用户在后台「外观 → 小工具」找不到可以拖动挂件的地方,看到的全是区块。
根因:WP 5.8 起后台小工具页默认走区块编辑器
(wp-admin/widgets-form-blocks.php),它没有「从左栏拖到右栏」这个动作,
只能点「+」再搜名字。本主题此前从未关掉它。
改动:
1. 关闭区块小工具编辑器,两道开关互为备份
- add_filter('use_widgets_block_editor', '__return_false')
- remove_theme_support('widgets-block-editor'),挂 after_setup_theme:20
(核心 wp_setup_widgets_block_editor 挂在 priority 1 默认 add,
所以 remove 必须晚于它,否则静默失败)
2. 4 个挂件(ad/about/tags/posts)构造函数的名字改为显式传第 2 参
关于第 2 点的性质说明(重要,避免误读成"修了缺陷"):
原先写 parent::__construct(false, false, $widget_ops) 时,
$widget->name 确实是 false,但后台列表/搜索读的**不是**它,而是
$wp_registered_widgets[...]['name']。后者经
wp_register_sidebar_widget() 里的 array_merge($widget, $options)
被 $widget_ops['name'] 覆盖成真名字。
实测(老代码):$widget->name = false,
$wp_registered_widgets['ad-1']['name'] = '图片广告'。
所以挂件名字从来没空过,用户找不到挂件与名字无关,纯粹是区块编辑器没有拖放。
第 2 点属于可读性清理(不再依赖隐式覆盖),不是用户可见缺陷的修复。
id_base 全部保持原值(ad/about/tags/posts),已有挂件实例不会丢。
验证:
- 真实 WP 7.1.3 加载待发布包,页面级 28 条 + 元数据 50 条判据全绿
- 老代码跑同一套判据:仅区块开关相关失败,名字类判据全部通过(印证上述判断)
- 9 组反证全部真红(含「只去掉一道开关仍应全绿」的冗余性验证)
- 96 个 PHP 文件全量 lint 通过
2026-10-27 09:21:02 +08:00
..
2026-10-25 19:41:49 +08:00
2026-10-26 12:20:33 +08:00
2026-10-23 13:55:23 +08:00
2026-10-26 18:42:40 +08:00
2026-10-24 01:03:36 +08:00
2026-10-25 20:19:27 +08:00
2026-10-25 17:10:06 +08:00
2026-10-26 13:25:51 +08:00
2026-10-25 10:36:29 +08:00
2026-10-25 10:36:29 +08:00
2026-10-23 12:55:41 +08:00
2026-10-26 12:20:33 +08:00
2026-10-25 22:17:45 +08:00
2026-10-23 17:29:37 +08:00
2026-10-24 01:03:36 +08:00
2026-10-23 14:43:47 +08:00
2026-10-24 01:03:36 +08:00
2026-10-25 09:52:07 +08:00
2026-10-23 22:56:10 +08:00
2026-10-26 11:37:42 +08:00
2026-10-23 13:55:23 +08:00
2026-10-23 12:55:41 +08:00
2026-10-23 13:55:23 +08:00
2026-10-25 13:37:26 +08:00
2026-10-27 09:21:02 +08:00