php 键标重排,WordPress ID 重排代码文件 – 打开即可重新排列,亲测无误!

本文介绍了一种解决WordPress中自动草稿(auto-draft)问题的方法,通过SQL查询找到并删除这些记录,最后使用PHP脚本重新排列文章ID。

WordPress ID 连续问题确实很麻烦,除了文章修订历史和自动保存记录外,还有个自动草稿。那天检查了一下我数据库 wp-posts 表,发现 ID 已乱。赶紧用 SQL 语句查了下,看看有哪些未发布的文章记录:

SELECT *

FROM wp_posts

WHERE `post_status` != 'publish'

显示出来有 5 条,全部是 post_status 为 auto-draft 的记录,即自动草稿!修订历史和自动保存问题我已经解决了,网上方法很多。但是这个 auto-draft 一直没有解决,之前 WordPress 3.x 轻松搞定,现在新版有些麻烦。但是方法是有的,只是我不想去修改 WordPress 源文件。

有些人说不用 Post ID 作为文章 URL 不就行了,就不用管这些额外产生的文章 ID 了。我其实用的本来就不是 Post ID,而是 Post name,但即便如何,我也不想数据库里产生这么多无用的垃圾记录,不是强不强迫症的问题,占用空间倒不说,等数据量大了会影响性能。

于是用 SQL 删除所有的 auto-draft:

DELETE FROM `wp_posts` WHERE `post_status` = 'auto-draft';

最后进行 ID 重排,将以下代码保存为 .php 文件,上传到网站根目录,运行即可,几次亲测无误!

require_once( './wp-config.php' );

function change_post_id($id)

{

global $convertedrows, $wpdb;

/** 修改文章ID关联的类别、标签、自定义字段、评论各表,prefix是您安装时设置的数据库表前缀 */

$wpdb->query( 'update ' . $wpdb->prefix .'posts set ID = ' . $convertedrows . ' where ID = ' . $id );

$wpdb->query( 'update ' . $wpdb->prefix .'term_relationships set object_id = ' . $convertedrows . ' where object_id = ' . $id );

$wpdb->query( 'update ' . $wpdb->prefix .'postmeta set post_id = ' . $convertedrows . ' where post_id = ' . $id );

$wpdb->query( 'update ' . $wpdb->prefix .'comments set comment_post_ID = ' . $convertedrows . ' where comment_post_ID = ' . $id );

$convertedrows++;

}

/** ID默认由1开始 */

$convertedrows = 1;

/** 查询数据库文章表所有记录 */

$sql_query = 'SELECT ID FROM ' . $table_prefix . 'posts ORDER BY ID ASC';

$all_post_ids = $wpdb->get_results( $sql_query );

/** 有返回值时则执行循环 */

if ( is_array( $all_post_ids ) ) {

foreach ( $all_post_ids as $post_id ) {

change_post_id( $post_id->ID );

}

}

/** 重新设置文章ID自动增加的起点 */

$wpdb->query('alter table ' . $table_prefix .'posts AUTO_INCREMENT = ' . $convertedrows);

echo 'Total:'. $convertedrows .', It\'s ok!!! by www.Hack520.com ';

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值