在最新版的 wordpress 系统中,依然存在着文章ID不连续显示的问题,也就是我们还没有上传多少文章,在数据库里的ID号已经很大了,也就是说如果我们的博客使用的是固定链接,那么在前台显示的ID相差会很大,比如第一篇文章是ID=2,那么第二篇可能就是ID=5或者ID=8了,这就是wordpress文章ID不连续显示的问题了。
其实这个也不能单纯的定义成wordpress的bug,毕竟人家的程序是这样设计的,可能程序上设计得过于完美了,但对于国内许多用户来说,可能更想要连续的ID吧,这样看起来更美观一点,而且对于我来说,数据库中也不会显得更凌乱,当然如果你的固定链接中没有使用post ID,那么对你来说文章ID是透明的,也就无关紧要了。即使固定链接中用了 post ID,如果你不是特别的在意,连不连续也是无关紧要的。
造成wordpress文章ID不连续的原因有如下两点,在 WordPress 系统的设计中,都会有一个自动草稿的功能,就是你在编辑文章的时候,每隔一定的时间会自动将文章保存成草稿,这样设计的目的是保证了在误修改的情况下可以还原之前的内容,但这样会占用数据库许多ID号。
对于我们这样的小博客来说,完全没有必要要这样的功能,那么如何去掉自动保存的草稿功能呢,请看我修改的最新版的 wordpress 系统的方法。
一,首先在 wp-config.php文件中添加如下代码,这两段代码我忘记wp-config.php中是不是已经有了,如果有了就改成如下的参数,如果没有加上去就行了,在测试的时候直接 false 禁用无效,所以后来索性将自动保存的时间间隔设置成了 120000000,这样无论你编辑多长时间都不会产生ID了。
/** 禁用修改版。 */
define(‘AUTOSAVE_INTERVAL’, 120000000 ); // 设置自动保存间隔,单位是秒,默认60
define(‘WP_POST_REVISIONS’, false ); // 禁用文章修订功能
二,还要在后台 wp-admin/ 目录下的 post.php 和 post-new.php 文件中删除掉保存成草稿的代码,如果不删除掉,还是会产生ID号的。
post.php 删除以下代码
/* if ( $last = wp_check_post_lock( $post->ID ) ) {
add_action('admin_notices', '_admin_notice_post_locked' );
} else {
$active_post_lock = wp_set_post_lock( $post->ID );
if ( 'attachment' !== $post_type )
wp_enqueue_script('autosave');
} */
//$title = $post_type_object->labels->edit_item;
//$post = get_post($post_id, OBJECT, 'edit');
//if ( post_type_supports($post_type, 'comments') ) {
//wp_enqueue_script('admin-comments');
//enqueue_comment_hotkeys_js();
//} (PS:^_^不错的php学习交流群:276167802,验证:csl,有兴趣的话可以加入进来一起讨论)
post-new.php 注释掉 wp_enqueue_script(‘autosave’); 即可。
总结:至此,已经禁用了文章保存草稿占用数据库ID的问题了,也基本上实现了文章无ID显示的问题了,但这里还有一点要说明的是,除了文章修订版占用大量ID号外,wordpress还有两个方面也会占用数据库的ID号,一个是插件主题,插件主题在设置页面导航时可能会占用几个数据库的ID号,但这是很少量的ID号了,通常不去更换导航,基本上就可以忽略不计了,另一个重点要说的是我们上传的附件也会大量占用ID号,比如上传一个图片,上传一个下载文件等,都会占用一个数据库的ID号,这个是没办法更改的,如果你对自己的页面特洁僻的话,就可以通过 FTP 来上传了,当然如果你能找到解决的方法,是最好不过的了。
以上是本文关于完美解决wordpress文章ID不连续显示的问题的详细叙述,希望本文对广大php开发者有所帮助,感谢阅读本文。