该项目是原kratos的一个分支。 原主题的地址是: https://github.com/vtrois/kratos 因为我需要一些定制的功能,就fork出来一个新的分支,自己用。如果你对原有的主题开发也有不满意的地方,欢迎使用我的这个版本。当然,版权仍然是属于原主题。 主题预览:老杨说话的地方。 该仓库已同步到多个git托管平台,包括Github、Gitee、 Gitlab和阿里云Code。这些代码库都和源库保持一致和同步,在任何平台上关注都可以。 **Github因为网络原因,同步会出现失败情况,无法保证最新。** 主要修改的地方主要包括: 1. 为移动端增加了侧边栏显示。之前的版本,在移动端无法看到最近评论,这个版本加入了这个功能。当然只是在首页,在文章页面,为了减少数据传输,仍然没有侧边栏。 2. 文章聚合widget,将最新文章优先显示。原来的版本,是显示最热门文章,但是不知道什么原因,热点文章总是没几个,而且我认为,大部分人上来,应该时主要为了看最新文章的吧。 3. 删除了配置页面中的关于主题,精简、精简、精简。 4. 删除了资源托管选项,删除了媒体托管选项。 5. 文章配置中,删除了文章版权信息,删除了网易云音乐。 6. 删除了社交相关配置选项。 7. 增加了在页脚显示国旗的选项。 # 修复Bug 1. 如果使用了插件,会改变comment的div名称,class="comments" 变成了comments-area,因此,评论的样式不好用了。 此时,在主题的额外CSS中添加: ``` .k-main .details .comments-area { margin-top: 16px; padding: 1.6px 16px 16px; border-radius: 2px; background-color: #fff; -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } .k-main .details .post-2 .comments-area { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } ``` 就可以了。该问题属于和插件的冲突问题,因此,在额外CSS中添加,不修改主题本身。 # 代码块样式 主题的 `assets/css/kratos.css` 里有一组 `.k-main .details .article .content` 下的 `pre` / `code` / `kbd` / `pre code` / `pre ol` / `pre li` 规则,负责代码块与行内代码的底色和间距。 **这六条曾经在压缩产物里整组丢失过**:某次改动把单行压缩版 `kratos.min.css` 手工展开成可读格式, 展开时漏掉了这一整段,而原始未压缩的 `kratos.css` 里它们是齐全的,导致源与产物对不上。 表现是行内 `code` 与 `kbd` 没有样式(代码块因为插件 Prism 主题的覆盖才没露馅)。 改完 CSS 后请用压缩器重新生成产物,不要手工维护 `kratos.min.css`: ```bash npx clean-css-cli@5.6.3 -o assets/css/kratos.min.css assets/css/kratos.css ``` # 主题自动更新 更新走的是一份静态 JSON + 一个 zip 包,由 `inc/update-checker/`(Plugin Update Checker 4.9)消费。 - 元数据地址:`https://yangyq.net/theme-update/update.json` (定义在 `inc/theme-core.php`,可用 `wp-config.php` 里的 `YANG_THEME_UPDATE_URL` 覆盖) - 发布目录:站点根下的 `theme-update/`,内容只有三样: ``` theme-update/update.json # 版本元数据 theme-update/kratos_yang.zip # 主题包,解压后是 kratos_yang/ 目录 theme-update/readme.html # 「详情」页,可省 ``` `update.json` 格式(`version` 与 `details_url` 必填): ```json { "version": "3.3.0", "details_url": "https://yangyq.net/theme-update/readme.html", "download_url": "https://yangyq.net/theme-update/kratos_yang.zip" } ``` ## 发布新版本的顺序 **先改 `style.css` 里的 `Version`,再打包**,否则 WordPress 认为没有新版本,不会提示升级。 1. 改 `style.css` 的 `Version`(例如 3.2.2 → 3.3.0) 2. 打包:`zip -r kratos_yang.zip kratos_yang -x "*.DS_Store" "*/.git/*"` 3. 传 `kratos_yang.zip` 到 `theme-update/` 4. **最后**才改 `update.json` 里的 `version` 第 4 步放最后,是因为 WordPress 见到新版本号就会立刻允许升级; 若此时 zip 还是旧的,等于发了个指向旧包的更新,装完版本号没变(或者直接坏掉)。 ## ⚠️ 自动升级会覆盖主题目录 WordPress 升级主题的做法是**删掉整个 `kratos_yang/` 再解压新包** (`wp-admin/includes/class-theme-upgrader.php` 里 `clear_destination => true`, 随后 `delete_old_theme()` 递归删除)。所以任何直接改在服务器主题目录里的东西都会丢, 包括手工打的补丁(例如曾经直接在 `footer.php` 里加的 Prism 脚本)。 **自定义样式不再放主题目录。** 早期版本有一个 `custom/` 目录(`custom.css` / `custom.js` / `custom.php`),是给用户随手加样式的入口,但它位于主题目录内, 每次升级都会被清空 —— 而且 `custom.php` 会被 `require`,等于允许在主题里执行任意 PHP 代码。该模块已在 3.2.2 移除,改为后台选项: > 后台 → 主题选项 → **自定义代码** → 自定义 CSS / 自定义 JS 这两段内容存在数据库的 `kratos` 选项里,**升级、重装、改主题目录名都不受影响**。 它们分别在主题样式表和主题脚本之后加载,优先级最高。 几个要点: - 不需要写 `