最新消息:

WordPress 让文章ID连续

建站 2848浏览

使用 WordPress 的小伙伴们可以发现,最大的文章 ID 要远远大于文章的实际总量,对于某些强迫症患者来说,这绝对是无法忍受的!

文章 ID 不连续的原因

造成ID不连续或者过大倍数于总文章量的原因如下:

  1. 文章的自动保存,使用 WordPress 的默认编辑器,在编辑过程中,每隔一段时间就会保存一次,已防止数据丢失;
  2. 文章的修订版本,每当你修改文章时都会产生修订版本,而且是每修改一次就产生一个,即使删除修订版本,原占用的ID也无法回收了;
  3. 附件占用 ID,WordPress 的图片附件实际是一种特殊的 post,在数据表结构看出 wp_posts 表里,图片 attachment 类型和 post 类型共享 ID 号的,你嵌入多少图片就占用多少 ID,这个无法改变。

配置 wp-config.php 来解决

事实上,由于附件占用 ID,没有绝对的方法可以让 ID 连续,但是不相差过大还是可能的。因此主要从修订版本和自动保存开刀了。

打开 WordPress 根目录下的 wp-config.php 文件,在

define(‘WP_DEBUG’, false);

之后添加:

define('AUTOSAVE_INTERVAL', 36000); //自动保存10小时一次
define('WP_POST_REVISIONS',false); //取消自动修订版

为什么选择10小时自动保存一次而不是直接false,因为修改成 false 以后造成 WordPress 报错的一个 bug,开启 debug 可以在编辑文章时看到提醒,编辑一篇文章可不会超过 10 小时,所以效果是一样的。

这个方法要修改 WordPress 的原文件,对于主题制作者,如果要添加移除自动保存和修订版本的选项,还是推荐下面的主题 functions.php 修改方法。

修改主题 functions.php 解决

将代码添加到主题的 functions.php 即可:

wp_deregister_script('autosave'); //移除自动保存
remove_action('post_updated','wp_save_post_revision' ); //移除修订版本

这里移除修订版本的方法不同于网上早期的方法的地方是,wp_save_post_revision 挂载的钩子已经由 pre_post_updated 变成了 post_updated,这个变化貌似是 WordPress 4.0 版本之后,造成了早期的修改方法失效了,具体见 WordPress 原文件 wp-includes/default-filters.php 的第265行 ( WordPress 4.2.2 版本 )。

手动改写 ( ID 绝对连续 )

在后台固定链接设置中,将文章固定链接设置为 “/%postname%.html” 的形式,然后在写文章时,将文章别名设置为阿拉伯数字形式,并且和上下文保持连续即可。

想用这种方法建议一开始就使用,中途开始使用也行,虽说,老文章存在不连续,但是至少以后发布的新文章是绝对连续的,也算是间接满足了一下强迫症的需求。当然,如果有些小伙伴非要老文章也连续,这也不是不可能实现。

方法1

进入 mysql 命令或者 phpmyadmin 的 SQL,执行如下命令即可:

update wp_posts set post_name=ID where post_status='publish' and post_type='post';

注意:wp_posts 是 WordPress 的文章数据表,wp_ 是默认的前缀,如果自定义更改过,请根据实际修改即可。

方法2

将以下代码保存为 php 文件,比如 update_post_name.php,并上传到网站根目录,执行即可,成功后记得删除!

<?php
/*
 功能描述: 将已发布的文章别名修改成对应 ID,让文章以别名完美连续
 功能介绍页面: https://www.ivicos.com/32.html
*/
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!';
?>

注意:所有设置数据库的操作务必记得先备份,避免因失误带来无法挽回的损失。

成功完成以上步骤之后,你之前发布的文章的别名就全部变成了对应的 ID 了!这时候你就可以放心大胆的将固定链接设置为 /%postname%.html 了!后续写文章,手动将文章别名设置为与上文连续的数字即可让文章地址完美连续!

虽然这种方法非常麻烦,每次写文章还需要查看上一篇的别名用到哪个数字了,但是这种方法是最完美的了。

好了,WordPress 让文章ID连续 就分享到这里,非常感谢你的来访。如果你很喜欢本站,请不要忘记收藏本站,以便下次继续访问;也可以 关注站长微博 随时获取最新动态。你的支持就是我最大的动力!

转载请注明:爱维科斯 » WordPress 让文章ID连续

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者