wordpress有个缺点,那就是在后天发表文章的时候,系统会自动等时间地帮你备份。虽然出发点是好的,但是却导致了发表的文章的ID不连续。比如,前一篇文章的网站是27.html,很可能在你发表下一篇文章的时候网站会变成45.html。至此为止,博客中总共18篇文章,在我没进行重新排序之前,文章的ID已经达到了300多了。所以趁文章还不多的,赶紧采取一些措施解决下。废话少说,贴出代码(代码中已注释)。其中数据库表的前缀默认为wp_,应该根据自己的表进行修改。(温馨提示:在任何数据库的操作前,最好先备份数据库!!!)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 | <?php
/**
* WordPress重新排列不连续的文章ID
*/
$hostname_blog = "localhost";//服务器名称
$database_blog = "dbname";//数据库名称
$username_blog = "username";//数据库账户
$password_blog = "password";//数据库密码
$blog = mysql_pconnect($hostname_blog, $username_blog, $password_blog)
or trigger_error(mysql_error(),E_USER_ERROR); //打开一个到 MySQL 服务器的持久连接
$no = 1;//初始化变量
function change_id($id)//定义change_id()函数
{
global $no; //全局变量
// 修改post_id,并修改分类、标签、自定义字段、评论的对应关系
$sql = 'update wp_posts set ID = ' . $no . ' where ID = ' . $id;
mysql_query($sql);
$sql = 'update wp_term_relationships set object_id = ' . $no . ' where object_id = ' . $id;
mysql_query($sql);
$sql = 'update wp_postmeta set post_id = ' . $no . ' where post_id = ' . $id;
mysql_query($sql);
$sql = 'update wp_comments set comment_post_ID = ' . $no . ' where comment_post_ID = ' . $id;
mysql_query($sql);
$no = $no + 1;
}
mysql_select_db($database_blog, $blog);//设置活动的 MySQL 数据库
$query_postRecord = "SELECT ID FROM wp_posts ORDER BY ID ASC";
$all_postRecord = mysql_query($query_postRecord);
$row_postRecord = mysql_fetch_assoc($all_postRecord);//从结果集中取得一行作为关联数组
do {
change_id( $row_postRecord['ID'] );
}
while ($row_postRecord = mysql_fetch_assoc($all_postRecord));//不断调用change_id()函数来修改ID
// 重新设置post id自增起点
mysql_query('alter table wp_posts AUTO_INCREMENT = ' . $no);
echo 'ResetID Succeed';
?>
|
Comments »