AI摘要
Typecho分类计数修正插件解决了Typecho在草稿转发布时分类计数不准确的问题。插件通过注册钩子,在文章发布时自动调用onFinishPublish方法,仅针对草稿转发布场景。用户需在usr/plugins/目录下新建FixCategoryCount文件夹并创建Plugin.php文件,粘贴代码后在后台启用插件。
Typecho有一个小bug,在撰写文章保存草稿再发布的时候,会导致分类中文章计数不准确
原因是草稿转发布时,Typecho貌似没有自动触发分类计数的更新逻辑,导致count字段不同步
为了避免对源代码的改动影响后续版本更新,写了这个插件暂时解决这个问题
场景:typecho v1.3.0-rc,handsome 10.1.0(开发版),php 8.4.6
如果遇到了同样的情况可以试一下这个插件
<?php
/**
* 草稿转发布自动修正分类计数
*
* @package FixCategoryCount
* @author Kev
* @version 1.0.0
* @link https://kev.fit
* @description 解决Typecho草稿转发布时分类数量不同步的问题
*/
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
class FixCategoryCount_Plugin implements Typecho_Plugin_Interface
{
public static function activate()
{
Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array('FixCategoryCount_Plugin', 'onFinishPublish');
}
public static function deactivate() {}
public static function config(Typecho_Widget_Helper_Form $form) {}
public static function personalConfig(Typecho_Widget_Helper_Form $form) {}
public static function onFinishPublish($contents, $widget)
{
if ($widget->status == 'draft' && $contents['status'] == 'publish') {
$cid = $widget->cid;
$categories = $widget->request->getArray('category');
if ($categories) {
$widget->setCategories($cid, $categories, false, true);
}
}
}
}
它的作用是:
- 注册一个钩子,让Typecho在文章发布(finishPublish)时,自动调用本插件的onFinishPublish方法
- 它不会影响正常发布、编辑、删除文章的流程,只针对“草稿转发布”这个特殊场景
- 后续版本更新如果修复了这个问题,将插件禁用删除即可
食用方式:
- 在usr/plugins/目录下新建FixCategoryCount文件夹,在FixCategoryCount文件夹中新建Plugin.php
- 将上面的代码粘贴进去,在后台插件启用即可