解决typecho分类和标签mid不连续的问题

2017年05月04日 6点热度 0人点赞 4条评论

将代码保存为php文件,上传至网站根目录,在浏览器地址栏访问一下即可。

特别提醒:请在PHP7以下版本的服务器上执行。本操作涉及数据库,请提前做好备份工作。另外,分类和标签mid重新排列后,子分类所属父分类可能不正确,需手动修改,如无二级分类,可略过。

<?php
/**
 * Typecho重新排列分类和标签(meta)不连续的mid
 * Blog    :https://blog.www.yuweiji.com/
 */
$hostname_blog = "localhost";
$database_blog = "数据库名";
$username_blog = "数据库用户名";
$password_blog = "数据库密码";
$blog = mysql_pconnect($hostname_blog, $username_blog, $password_blog) or trigger_error(mysql_error(),E_USER_ERROR);
$no = 1;
function change_id($mid)
{
    global $no;
    // 修改meta id,并修改分类、标签、自定义字段、评论的对应关系
    $sql = 'update typecho_metas set mid = ' . $no . ' where mid = ' . $mid;
    mysql_query($sql);
    $sql = 'update typecho_relationships set mid = ' . $no . ' where mid = ' . $mid;
    mysql_query($sql);
    $no = $no + 1;
}
mysql_select_db($database_blog, $blog);
$query_postRecord = "SELECT mid FROM typecho_metas ORDER BY mid ASC";
$all_postRecord = mysql_query($query_postRecord);
$row_postRecord = mysql_fetch_assoc($all_postRecord);
do {
    change_id( $row_postRecord['mid'] );
} while ($row_postRecord = mysql_fetch_assoc($all_postRecord));
// 重新设置meta id自增起点
mysql_query('alter table typecho_metas AUTO_INCREMENT = ' . $no);
echo 'ok';
?>

余味

折腾最是有趣

文章评论

  • 迷惘旅人

    有没有针对文章 id 的来一发~

    2018年01月26日
    • 卡维

      @迷惘旅人 有呢,https://yuweiji.com/1347.html

      2018年12月24日
  • ClayMore

    最好做成插件

    2017年11月23日
    • 卡维

      @ClayMore 嗯,可以考虑

      2017年11月23日