Typecho自动修正文章cid、分类标签mid不连续的方法

网上有些关于自动调整Typecho的cid、mid的php脚本,然而其中使用的mysql方法过于老旧且不支持php7,每次需要手动访问运行很麻烦。本文就上述的脚本进行了修改,使其支持php7且能够在发布文章后自动运行。

1、修改网站根目录下config.inc.php最后定义数据库部分

/** 定义数据库参数 */
$hostname_blog = "数据库连接地址";
$database_blog = "数据库名";
$username_blog = "数据库用户名";
$password_blog = "数据库密码";

$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
  'host' => $hostname_blog,
  'user' => $username_blog,
  'password' => $password_blog,
  'charset' => 'utf8',
  'port' => '3306',
  'database' => $database_blog,
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

2、在/admin目录下新建change-cid.php文件。因示例中关于页、归档页、分类页、标签页占据了1~4的cid(需要手动进入mysql修改表typecho_contents中的cid列),所以本脚本会从表typecho_contents的第五行开始自动修改文章别名slug为cid-4请按照自己的需求在第19-20行进行修改

 "4") {
        $sql = 'update typecho_contents set slug = ' . ($no - "4") . ' where cid = ' . $no;
        mysqli_query($blog,$sql);
    }
    $sql = 'update typecho_relationships set cid = ' . $no . ' where cid = ' . $cid;
    mysqli_query($blog,$sql);
    $sql = 'update typecho_comments set cid = ' . $no . ' where cid = ' . $cid;
    mysqli_query($blog,$sql);

    $no = $no + 1;
}

$query_postRecord = "SELECT cid FROM typecho_contents ORDER BY cid ASC";
$all_postRecord = mysqli_query($blog,$query_postRecord);
$row_postRecord = mysqli_fetch_assoc($all_postRecord);

do {
    change_cid( $row_postRecord['cid'] );    
} while ($row_postRecord = mysqli_fetch_assoc($all_postRecord));

// 重新设置post id自增起点
mysqli_query($blog,'alter table typecho_contents AUTO_INCREMENT = '.$no);
//echo 'ok';        //测试时使用,正式使用时注释掉
mysqli_close($blog);
?>

3、在/admin目录下新建change-mid.php文件

4、修改/admin/manage-posts.php文件,在原内容前加入如下内容。如果对于分类、标签修改管理较多,可以在/admin/manage-categories.php/admin/manage-tags.php文件前加入相同内容。


文章来源于互联网:Typecho自动修正文章cid、分类标签mid不连续的方法

赞(0) 打赏
未经允许不得转载:传奇私服 - 传奇私服发布网,最好玩、最新潮的传奇SF尽在眼前 » Typecho自动修正文章cid、分类标签mid不连续的方法

评论 213

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址