「个人简介」挂件:头像/昵称/简介无处可填 + 背景图入口难找 + 大图撑爆挂件 #21

Closed
opened 2026-10-26 15:27:11 +00:00 by laoyang · 2 comments
Owner

来源

用户 2026-10-26 对侧栏「个人简介」挂件(widget_about)提出的一组问题。

用户原话:

先说这个人简介,这个个人简介中的图片和显示的一句话到底是从哪儿来的?现在我点击这个小挂件,它没有地方可以写。修改这两个东西,而且没有地方修改它的背景图。另外一个在后台设置的时候,就在 WordPress 的设置有一个小外观,有一个小小工具那个地方设置的时候,我的头像当这个头图、头像的图片特别大的时候,就会把这个小挂件给撑得很大,就是那个图片会把整个小挂件给盖住,看看这个到底是怎么回事儿?

需求清单(三件事,一单交付)

一、头像 / 昵称 / 简介:挂件表单里没有字段

现状盘点(已核对线上 yangyq.net):

前台显示 实际读的是 后台在哪改
头像图片 yang_option_image('a_gravatar') 主题设置 → 站长信息 → 个人头像
昵称(老杨) kratos_option('a_nickname') 主题设置 → 站长信息 → 个人昵称
简介(博士,非博学之士…) kratos_option('a_about') 主题设置 → 站长信息 → 个人简介
背景图 $instance['background'](唯一属于挂件的) 挂件表单里的「背景图片」

⇒ 用户「点开挂件没地方写」是真的:三项全在主题设置里,挂件表单只有背景图一个字段。

要做的:挂件表单补齐三项 —— 头像(媒体库选图)、昵称、简介,都在挂件里直接填。

二、背景图入口难找

表单里其实有一个「背景图片」text 输入框 + 「选择图片」按钮,但混在表单里不显眼,用户直接说「没有地方修改」。

要做的:补图片缩略图预览(一眼看到当前用的是哪张),并让「选择图片 / 清除」更明确。

三、头像原图很大时撑爆挂件

根因(已用真实浏览器复现,非推测):assets/css/kratos.css 里的尺寸约束全是三段祖先选择器:

.k-main .sidebar .w-about .wrapper img { width: 100px; height: 100px; ... }
.k-main .sidebar .w-about .background { height: 120px; }

.k-main .sidebar 是前台文章页/首页的布局。挂件一旦出现在没有这层祖先的环境
(WP 后台「外观→小工具」的挂件预览、区块小工具预览面板、侧栏样式被改写时),
这些规则一条都不生效 ⇒ 头像按原图尺寸铺开、背景塌成 0。

实测数据(线上 avatar.jpg 原图 2136×2136):

场景 挂件尺寸 头像渲染 结果
前台首页(有祖先) 397×285 100×100(+4px 边框=108) 正常
去掉祖先(后台预览) 1400×2217 2136×2136 撑爆,页面横向滚动宽度 2156px

复现脚本:_tooling/yang_theme_test/_diag_admin_preview.js(同一段 CSS,只切换有无祖先)。

要做的:尺寸约束内聚到挂件自己身上,不依赖前台布局祖先。无论放进什么容器,
头像都是固定小圆、背景都是固定高、永远不可能溢出撑大挂件。

关键约束

  1. 留空回落主题设置(用户已确认)。挂件字段优先;留空则显示主题设置里那套。
    线上 yangyq.net 侧栏正用着「老杨 / 博士,非博学之士…」,升级后显示一个字都不能变。
  2. 同一侧栏放两个个人简介挂件时,各自独立、互不串(实例值优先,实例空才回落)。
  3. 头像复用主题已有的媒体库上传 JS(assets/js/widget.min.js 已支持
    button[class*='upload_'] + 相邻 input 的模式)。
  4. 前台外观逐像素不变:头像仍 100×100、4px 半透明白边、圆形、上移 50px 压在背景上。
  5. 不用 !important 硬压 —— 会让用户以后想改样式完全改不动。

验收标准

表单

  • 后台挂件表单能改:头像 / 昵称 / 简介 / 背景图(四项)
  • 头像与背景图都有缩略图预览
  • 保存后前台立即生效(不必再去主题设置)
  • 四项全留空时,前台显示与本版之前完全一致(回落主题设置)
  • 放两个实例,头像/昵称/简介互不串

撑爆

  • 在没有 .k-main .sidebar 祖先的容器里渲染,头像渲染尺寸不随原图变大
  • 挂件高度不随头像原图尺寸变化
  • 页面无横向滚动条
  • 前台(有祖先)外观与当前版本逐像素一致
  • 极端图三种各验一遍:2136×2136、1×1、超宽 4000×100

为什么单独建单

与 #20 的侧栏挂件一致性是不同问题:#20 修的是标题/id/URL 转义等已存在字段的问题,本单是 widget_about 缺 3 个字段(用户不知道头像昵称简介从哪来、改不了)外加一条独立的 CSS 祖先依赖 bug(大图撑爆)。可单独验收。

## 来源 用户 2026-10-26 对侧栏「个人简介」挂件(`widget_about`)提出的一组问题。 用户原话: > 先说这个人简介,这个个人简介中的图片和显示的一句话到底是从哪儿来的?现在我点击这个小挂件,它没有地方可以写。修改这两个东西,而且没有地方修改它的背景图。另外一个在后台设置的时候,就在 WordPress 的设置有一个小外观,有一个小小工具那个地方设置的时候,我的头像当这个头图、头像的图片特别大的时候,就会把这个小挂件给撑得很大,就是那个图片会把整个小挂件给盖住,看看这个到底是怎么回事儿? ## 需求清单(三件事,一单交付) ### 一、头像 / 昵称 / 简介:挂件表单里没有字段 **现状盘点**(已核对线上 `yangyq.net`): | 前台显示 | 实际读的是 | 后台在哪改 | |---|---|---| | 头像图片 | `yang_option_image('a_gravatar')` | 主题设置 → 站长信息 → 个人头像 | | 昵称(`老杨`) | `kratos_option('a_nickname')` | 主题设置 → 站长信息 → 个人昵称 | | 简介(博士,非博学之士…) | `kratos_option('a_about')` | 主题设置 → 站长信息 → 个人简介 | | 背景图 | `$instance['background']`(**唯一属于挂件的**) | 挂件表单里的「背景图片」 | ⇒ 用户「点开挂件没地方写」是真的:**三项全在主题设置里,挂件表单只有背景图一个字段**。 **要做的**:挂件表单补齐三项 —— 头像(媒体库选图)、昵称、简介,都在挂件里直接填。 ### 二、背景图入口难找 表单里其实**有**一个「背景图片」text 输入框 + 「选择图片」按钮,但混在表单里不显眼,用户直接说「没有地方修改」。 **要做的**:补图片缩略图预览(一眼看到当前用的是哪张),并让「选择图片 / 清除」更明确。 ### 三、头像原图很大时撑爆挂件 **根因**(已用真实浏览器复现,非推测):`assets/css/kratos.css` 里的尺寸约束全是三段祖先选择器: ```css .k-main .sidebar .w-about .wrapper img { width: 100px; height: 100px; ... } .k-main .sidebar .w-about .background { height: 120px; } ``` `.k-main .sidebar` 是**前台文章页/首页的布局**。挂件一旦出现在没有这层祖先的环境 (WP 后台「外观→小工具」的挂件预览、区块小工具预览面板、侧栏样式被改写时), 这些规则**一条都不生效** ⇒ 头像按原图尺寸铺开、背景塌成 0。 **实测数据**(线上 `avatar.jpg` 原图 **2136×2136**): | 场景 | 挂件尺寸 | 头像渲染 | 结果 | |---|---|---|---| | 前台首页(有祖先) | 397×285 | 100×100(+4px 边框=108) | 正常 | | 去掉祖先(后台预览) | 1400×**2217** | **2136×2136** | **撑爆**,页面横向滚动宽度 2156px | 复现脚本:`_tooling/yang_theme_test/_diag_admin_preview.js`(同一段 CSS,只切换有无祖先)。 **要做的**:尺寸约束**内聚到挂件自己身上**,不依赖前台布局祖先。无论放进什么容器, 头像都是固定小圆、背景都是固定高、永远不可能溢出撑大挂件。 ## 关键约束 1. **留空回落主题设置**(用户已确认)。挂件字段优先;留空则显示主题设置里那套。 线上 `yangyq.net` 侧栏正用着「老杨 / 博士,非博学之士…」,升级后**显示一个字都不能变**。 2. 同一侧栏放**两个个人简介挂件**时,各自独立、互不串(实例值优先,实例空才回落)。 3. 头像复用主题已有的媒体库上传 JS(`assets/js/widget.min.js` 已支持 `button[class*='upload_']` + 相邻 input 的模式)。 4. 前台外观**逐像素不变**:头像仍 100×100、4px 半透明白边、圆形、上移 50px 压在背景上。 5. 不用 `!important` 硬压 —— 会让用户以后想改样式完全改不动。 ## 验收标准 **表单** - [ ] 后台挂件表单能改:头像 / 昵称 / 简介 / 背景图(四项) - [ ] 头像与背景图都有缩略图预览 - [ ] 保存后前台立即生效(不必再去主题设置) - [ ] 四项全留空时,前台显示与本版之前**完全一致**(回落主题设置) - [ ] 放两个实例,头像/昵称/简介互不串 **撑爆** - [ ] 在没有 `.k-main .sidebar` 祖先的容器里渲染,头像渲染尺寸不随原图变大 - [ ] 挂件高度不随头像原图尺寸变化 - [ ] 页面无横向滚动条 - [ ] 前台(有祖先)外观与当前版本逐像素一致 - [ ] 极端图三种各验一遍:2136×2136、1×1、超宽 4000×100 --- ### 为什么单独建单 与 #20 的侧栏挂件一致性是不同问题:#20 修的是标题/id/URL 转义等已存在字段的问题,本单是 widget_about 缺 3 个字段(用户不知道头像昵称简介从哪来、改不了)外加一条独立的 CSS 祖先依赖 bug(大图撑爆)。可单独验收。
Author
Owner

3.2.51 已发布到更新通道

包与 readme 已上传到 theme-update/,update.json 已落 3.2.51。
服务器主题目录仍是 3.2.50,未被覆盖 —— 请在 WP 后台点「升级」升级到 3.2.51,升级后我再关单。


一、你问的「图片和那句话到底从哪儿来」

先回答这个问题。原本这三项全部来自主题设置,不属于挂件:

前台显示的 实际读的是 原先只能在哪儿改
头像图片 yang_option_image('a_gravatar') 主题设置 → 站长信息 → 个人头像
那句话(昵称) kratos_option('a_nickname') 主题设置 → 站长信息 → 个人昵称
简介 kratos_option('a_about') 主题设置 → 站长信息 → 个人简介
背景图 $instance['background'] 唯一属于挂件的,就在挂件表单里

所以你点开挂件「没有地方可以写」,是因为表单里真的只有「背景图片」一个字段。这也解释了为什么以前想改头像必须跑去主题设置 —— 那是全站共用的一份,改了会影响所有用到它的地方。

这一版改成:四项都是挂件自己的字段。

  • 个人头像(带「选择图片」,直接调媒体库)
  • 昵称
  • 个人简介(多行,支持换行)
  • 背景图片(带「选择图片」+「清除」)

二、留空仍然回落主题设置(升级后显示不变)

按你选的方案「保留,挂件留空就回落」做的。取值顺序:

① 挂件自己填的 → ② 主题设置里的那一份 → ③ 主题内置兜底

所以升级后什么都不填,显示和现在一模一样;想给同一个侧栏放两个人的简介,各自填各自的就行。

表单里每个字段都写了「留空则使用…」。输入框显示的是你填的原始值(空就是空),下面的缩略图画的是前台最终会用的那一张 —— 这两个刻意分开,免得你以为已经填好了、保存后才发现存的是主题设置那份。


三、「撑爆」的真因:不是图片大,是 CSS 选择器依赖了三层祖先

这是本轮最值得记的一条。症状:后台「外观 → 小工具」里,头像一旦是大图(比如手机原图 2136×2136),整个挂件被撑到两千多像素高、页面横向滚出两千多像素宽,图片把挂件糊住。

根因:老规则写的是

.k-main .sidebar .w-about .wrapper img { width:100px; height:100px }
.k-main .sidebar .w-about .background  { height:120px }

而后台挂件预览里根本没有 .k-main .sidebar 这层祖先(它把挂件直接塞进小工具面板)。于是这些规则一条都不生效,头像按原图尺寸铺开、背景高度塌成 0。

前台看起来正常,是因为前台恰好有那层祖先,问题被完整掩盖了。 这也是为什么这个 bug 能活这么久。

修法:让规则不再依赖祖先 —— 只作用于 .w-about 内部元素,并补 max-width / max-height 双保险。

修复前后实测对比(同一张 2136×2136 原图,后台预览环境):

修复前 修复后
挂件尺寸 380 × 2217 380 × 284
头像尺寸 2136 × 2136 108 × 108
背景高度 0 120
页面横向滚动 2146 / 1440 1440 / 1440

四、顺带修掉的两个小毛病

  • object-fit 从 fill 改 cover:以前 4000×100 这种超宽原图会被压扁变形,现在忠实裁切。正方形头像(你线上的真实情形)渲染结果完全不变。
  • 背景 url() 里的地址补了引号:媒体库文件名带空格很常见,没引号时 CSS 解析器会在空格处截断,整条声明作废、背景变白。

五、守住的三条「不许退化」

这几条都是量出来的,不是猜的:

  1. 头像必须保持 inline。改成 display:block 会让它脱离父级的 text-align:center,前台头像从居中变左对齐(.wrapper 高度 50→100、x 坐标 1096→948)。
  2. 前台 .k-main .sidebar .w-about { padding:0 } 不能省。通用规则 .k-main .sidebar .widget { padding:15px 30px } 是 (0,3,0),.w-about 只有 (0,1,0);少了这条,挂件多出内边距、整体高 57px(284→341),头像和文字全部错位。
  3. 昵称写「0」必须存得住。!empty('0') 是 false,用 empty() 判空的站点填「0」会变成空串、前台回落主题设置,而后台看起来像"没保存成功"。统一改成判「trim 后是不是空串」。

另外,老规则必须删掉、不能"再补一条新的":老规则 (0,3,1) 压过新规则 (0,2,1),两条并存时老规则在前台永远赢、新规则只对后台生效 —— 那样前台等于没改。


六、验证

项目 结果
行为/单元测试 67 通过 / 0 失败
反向验证(每条修复逐一破坏) 13 组全部真红
浏览器几何回归 76 通过 / 0 失败(前台+后台 × 四种极端原图:2136×2136、1×1、4000×100、100×4000)
修复前 CSS 跑同一套几何判据 38 条报红,精确复现你的症状
线上真实页面 + 新版 CSS 16 通过 / 0 失败
发布脚本自检 14 组反证全部真红,包内 96 个 PHP 文件 lint 通过

几何判据的核心是「同一段 CSS,有无祖先表现必须一致」,而不是"本地看起来正常"—— 后者在修之前也是正常的(本地拼的 HTML 恰好带了祖先),会把 bug 藏死。


七、本轮踩到的坑(记入 pitfalls)

  1. 反证正则先命中自己写的注释:/\.w-about \.wrapper img \{[^}]*\}/ 命中的是注释里的示例代码,真规则原封不动 ⇒ 注入"成功"但无效果。改用真实规则完整内容做锚点。
  2. 靶子只改 width 不改 max-width:max-width:100px 仍把尺寸卡回 100px ⇒ 像素不变 ⇒ 误报"判据没牙齿"。
  3. 判据捏造盒模型:我写了"108×108(100+4px 边框×2)",但线上主题带全局 box-sizing:border-box,实测就是 100×100。判据只有一边能过 = 量法错。
  4. substr_count('yang-media-preview') >= 2 是个假判据:背景那个 class="yang-media-preview yang-media-preview-wide" 一个属性里就含 2 次,删掉头像那处后计数仍是 2。改成按 class="yang-media-preview 数元素。
  5. Git Bash(MSYS2)会把 / 开头的参数当路径重写:/(\.w-about)/ → C:/.../PortableGit/(/.w-about)/,正则定界符被吞,preg_replace 报错但 $n 保持 0,表现成"锚点未命中",会误判成靶子写错。本地预览需 export MSYS2_ARG_CONV_EXCL='*'。
  6. empty($instance[...]) 判全文会永远红:widget_ad/tags/posts 里十几处老写法不涉及「0」边界,判全文范围写宽了。精确到 nickname / introduce 两个字段才恰好。
  7. R8 判据用了 $instance['introduce']:form() 里的 $introduceRaw = isset($instance['introduce']) 让它在注入后仍能 grep 到 ⇒ 误报"注入没生效"。改用只出现在 update() 里的 $new_instance。

请升级到 3.2.51 后试一下:外观 → 小工具 → 个人简介,四项应该都在里面了。确认没问题我再关单。

## 3.2.51 已发布到更新通道 包与 readme 已上传到 `theme-update/`,`update.json` 已落 3.2.51。 **服务器主题目录仍是 3.2.50,未被覆盖** —— 请在 WP 后台点「升级」升级到 3.2.51,升级后我再关单。 --- ## 一、你问的「图片和那句话到底从哪儿来」 先回答这个问题。**原本这三项全部来自主题设置,不属于挂件**: | 前台显示的 | 实际读的是 | 原先只能在哪儿改 | |---|---|---| | 头像图片 | `yang_option_image('a_gravatar')` | 主题设置 → 站长信息 → 个人头像 | | 那句话(昵称) | `kratos_option('a_nickname')` | 主题设置 → 站长信息 → 个人昵称 | | 简介 | `kratos_option('a_about')` | 主题设置 → 站长信息 → 个人简介 | | 背景图 | `$instance['background']` | **唯一属于挂件的**,就在挂件表单里 | 所以你点开挂件「没有地方可以写」,是因为表单里**真的只有「背景图片」一个字段**。这也解释了为什么以前想改头像必须跑去主题设置 —— 那是全站共用的一份,改了会影响所有用到它的地方。 **这一版改成:四项都是挂件自己的字段。** - 个人头像(带「选择图片」,直接调媒体库) - 昵称 - 个人简介(多行,支持换行) - 背景图片(带「选择图片」+「清除」) --- ## 二、留空仍然回落主题设置(升级后显示不变) 按你选的方案「保留,挂件留空就回落」做的。取值顺序: **① 挂件自己填的 → ② 主题设置里的那一份 → ③ 主题内置兜底** 所以升级后**什么都不填,显示和现在一模一样**;想给同一个侧栏放两个人的简介,各自填各自的就行。 表单里每个字段都写了「留空则使用…」。输入框显示的是**你填的原始值**(空就是空),下面的缩略图画的是**前台最终会用的那一张** —— 这两个刻意分开,免得你以为已经填好了、保存后才发现存的是主题设置那份。 --- ## 三、「撑爆」的真因:不是图片大,是 CSS 选择器依赖了三层祖先 这是本轮最值得记的一条。**症状**:后台「外观 → 小工具」里,头像一旦是大图(比如手机原图 2136×2136),整个挂件被撑到两千多像素高、页面横向滚出两千多像素宽,图片把挂件糊住。 **根因**:老规则写的是 ```css .k-main .sidebar .w-about .wrapper img { width:100px; height:100px } .k-main .sidebar .w-about .background { height:120px } ``` 而**后台挂件预览里根本没有 `.k-main .sidebar` 这层祖先**(它把挂件直接塞进小工具面板)。于是这些规则**一条都不生效**,头像按原图尺寸铺开、背景高度塌成 0。 **前台看起来正常,是因为前台恰好有那层祖先,问题被完整掩盖了。** 这也是为什么这个 bug 能活这么久。 **修法**:让规则不再依赖祖先 —— 只作用于 `.w-about` 内部元素,并补 `max-width` / `max-height` 双保险。 修复前后实测对比(同一张 2136×2136 原图,后台预览环境): | | 修复前 | 修复后 | |---|---|---| | 挂件尺寸 | 380 × **2217** | 380 × **284** | | 头像尺寸 | **2136 × 2136** | 108 × 108 | | 背景高度 | **0** | 120 | | 页面横向滚动 | **2146 / 1440** | 1440 / 1440 | --- ## 四、顺带修掉的两个小毛病 - **`object-fit` 从 `fill` 改 `cover`**:以前 4000×100 这种超宽原图会被压扁变形,现在忠实裁切。正方形头像(你线上的真实情形)渲染结果**完全不变**。 - **背景 `url()` 里的地址补了引号**:媒体库文件名带空格很常见,没引号时 CSS 解析器会在空格处截断,整条声明作废、背景变白。 --- ## 五、守住的三条「不许退化」 这几条都是量出来的,不是猜的: 1. **头像必须保持 inline**。改成 `display:block` 会让它脱离父级的 `text-align:center`,前台头像从居中变左对齐(`.wrapper` 高度 50→100、x 坐标 1096→948)。 2. **前台 `.k-main .sidebar .w-about { padding:0 }` 不能省**。通用规则 `.k-main .sidebar .widget { padding:15px 30px }` 是 `(0,3,0)`,`.w-about` 只有 `(0,1,0)`;少了这条,挂件多出内边距、整体高 57px(284→341),头像和文字全部错位。 3. **昵称写「0」必须存得住**。`!empty('0')` 是 `false`,用 `empty()` 判空的站点填「0」会变成空串、前台回落主题设置,而后台看起来像"没保存成功"。统一改成判「`trim` 后是不是空串」。 另外,**老规则必须删掉、不能"再补一条新的"**:老规则 `(0,3,1)` 压过新规则 `(0,2,1)`,两条并存时老规则在前台永远赢、新规则只对后台生效 —— 那样前台等于没改。 --- ## 六、验证 | 项目 | 结果 | |---|---| | 行为/单元测试 | **67 通过 / 0 失败** | | 反向验证(每条修复逐一破坏) | **13 组全部真红** | | 浏览器几何回归 | **76 通过 / 0 失败**(前台+后台 × 四种极端原图:2136×2136、1×1、4000×100、100×4000) | | 修复前 CSS 跑同一套几何判据 | **38 条报红**,精确复现你的症状 | | 线上真实页面 + 新版 CSS | **16 通过 / 0 失败** | | 发布脚本自检 | **14 组反证全部真红**,包内 96 个 PHP 文件 lint 通过 | 几何判据的核心是「**同一段 CSS,有无祖先表现必须一致**」,而不是"本地看起来正常"—— 后者在修之前也是正常的(本地拼的 HTML 恰好带了祖先),会把 bug 藏死。 --- ## 七、本轮踩到的坑(记入 pitfalls) 1. **反证正则先命中自己写的注释**:`/\.w-about \.wrapper img \{[^}]*\}/` 命中的是注释里的示例代码,真规则原封不动 ⇒ 注入"成功"但无效果。改用真实规则完整内容做锚点。 2. **靶子只改 `width` 不改 `max-width`**:`max-width:100px` 仍把尺寸卡回 100px ⇒ 像素不变 ⇒ 误报"判据没牙齿"。 3. **判据捏造盒模型**:我写了"108×108(100+4px 边框×2)",但线上主题带全局 `box-sizing:border-box`,实测就是 100×100。判据只有一边能过 = 量法错。 4. **`substr_count('yang-media-preview') >= 2` 是个假判据**:背景那个 `class="yang-media-preview yang-media-preview-wide"` 一个属性里就含 2 次,删掉头像那处后计数仍是 2。改成按 `class="yang-media-preview` 数元素。 5. **Git Bash(MSYS2)会把 `/` 开头的参数当路径重写**:`/(\.w-about)/` → `C:/.../PortableGit/(/.w-about)/`,正则定界符被吞,`preg_replace` 报错但 `$n` 保持 0,表现成"锚点未命中",会误判成靶子写错。本地预览需 `export MSYS2_ARG_CONV_EXCL='*'`。 6. **`empty($instance[...])` 判全文会永远红**:`widget_ad`/`tags`/`posts` 里十几处老写法不涉及「0」边界,判全文范围写宽了。精确到 nickname / introduce 两个字段才恰好。 7. **R8 判据用了 `$instance['introduce']`**:`form()` 里的 `$introduceRaw = isset($instance['introduce'])` 让它在注入后仍能 grep 到 ⇒ 误报"注入没生效"。改用只出现在 `update()` 里的 `$new_instance`。 --- **请升级到 3.2.51 后试一下:外观 → 小工具 → 个人简介,四项应该都在里面了。确认没问题我再关单。**
Author
Owner

按用户确认收尾,交付见上条发布评论。

交付版本:3.2.51(简介挂件实例字段化 + 撑爆真因是 CSS 依赖三层祖先,改成只依自身)

用户已验收,关闭本单。

按用户确认收尾,交付见上条发布评论。 交付版本:3.2.51(简介挂件实例字段化 + 撑爆真因是 CSS 依赖三层祖先,改成只依自身) 用户已验收,关闭本单。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: laoyang/wordpress-kratos-yang#21