真正解决WordPress文章ID连续的方法

第一步、禁用修订版本和自动保存
打开 WordPress 根目录下的 wp-config.php 文件,在 define('WP_DEBUG', false); 之后添加以下代码:
//自动保存10小时一次
define('AUTOSAVE_INTERVAL', 36000);
//禁用修订版本
define('WP_POST_REVISIONS',false);

第二步、替换旧文章(现在数据库里面的文章)的别名为文章 ID
方法1:进入 mysql 命令或者 phpmyadmin 的 SQL,执行如下命令修改即可:
update wp_posts set post_name=ID where post_status='publish' and post_type='post';
Ps:wp_posts 是 WordPress 的文章数据表,wp_ 是默认的前缀,如果自定义更改过,请根据实际修改即可。

方法2:使用以下 PHP 代码修改:
<?php
/**
* 将所以已发布的文章别名修改成对应ID,让文章以别名完美连续 By 张戈博客
*
* Ps:备份网站数据库后,请放到WordPress根目录执行,成功后请记得删除!
**/
require('./wp-blog-header.php');
global $wpdb;
$wpdb->query("UPDATE $wpdb->posts SET post_name = ID WHERE post_status = 'publish' AND post_type = 'post'");
echo 'Update Success!';
?>
将以上代码保存为 php 文件,比如 uppostname.php,并上传到网站根目录,执行即可,成功后记得删除!
Ps:所有设置数据库的操作务必记得先备份,避免因失误带来无法挽回的损失。

第三步、新文章自动使用ID作为别名
将下面的代码添加到主题的 functions.php ,新建的文章都会自动使用ID作为别名
//新文章自动使用ID作为别名
add_action( 'save_post', 'using_id_as_slug', 10, 2 );
function using_id_as_slug($post_id, $post){
global $post_type;
if($post_type=='post'){ //只对文章生效
// 如果是文章的版本,不生效
if (wp_is_post_revision($post_id))
return false;
// 取消挂载该函数,防止无限循环
remove_action('save_post', 'using_id_as_slug' );
// 使用文章ID作为文章的别名
wp_update_post(array('ID' => $post_id, 'post_name' => $post_id ));
// 重新挂载该函数
add_action('save_post', 'using_id_as_slug' );
}
}

没有账号? 忘记密码?

社交账号快速登录