WordPress文章ID重新排序教程

  • A+
所属分类:博客日记

使用 WordPress 的朋友很多都使用了文章 ID 作为固定链接形式,但由于草稿、修订版本、附件等的存在,这个ID号增长的是很快的。对于有强迫症的朋友来说,文章的ID号是跳跃式的,并不连续,让人很不舒服。

这几天趁着收拾博客,在网上找到了一个PHP脚本文件,能够很方便的重新排列 WordPress 的 ID 号。对于那些固定链接中没有 ID 的,则大可不必理会,或者你不是个强迫症患者,那么就也无所谓了。

1、备份数据库

这是个永恒的话题。对于数据库的操作,一定要事先进行数据备份并确保备份文件可用。数据无价,谨记!

2、禁用文章修订版本和自动保存功能

在其他文章中已经专门介绍了如何禁用文章修订版本和自动保存,这里就不再重复了。

3、删除冗余的修订版本和自动保存

愿意使用插件的朋友可以用类似 WP Cleaner 这样的插件来清理。

不愿意使用插件的朋友可直接在数据库中操作:

以下是清理文章历史修订版本的语句:

  1. DELETE a,b,c
  2. FROM wp_posts a
  3. LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
  4. LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
  5. WHERE a.post_type = 'revision';

以下是你修改文章时产品的一些冗沉数据:

  1. DELETE FROM wp_postmeta WHERE meta_key = '_edit_lock';
  2. DELETE FROM wp_postmeta WHERE meta_key = '_edit_last';

4、进入数据库对数据表进行下优化

5、重新排列不连续的文章 ID

下载 id.php 脚本,上传到你主机根目录下,运行此脚本,即可达到从新排序的效果,从1开始,文章太多的话多刷新几次。

下面是代码,自己复制建立一个文件也可以:

  1. <?php
  2. /**
  3.  * WordPress重新排列不连续的文章ID
  4.  * post_id作为固定链接或是使用投票等关联文章的插件勿用
  5.  * 5.5版本亲测,理论上其它版本也适用,操作前请备份好数据库,放心去干吧!
  6.  */
  7. /** 引入网站配置文件,这里主要获得数据库连接信息及常规操作类 */
  8. require_once( './wp-config.php' );
  9. function change_post_id($id)
  10. {
  11.  global $convertedrows, $wpdb;
  12.  /** 修改文章ID关联的类别、标签、自定义字段、评论各表,prefix是您安装时设置的数据库表前缀 */
  13.  $wpdb->query( 'update ' . $wpdb->prefix .'posts set ID = ' . $convertedrows . ' where ID = ' . $id );
  14.  $wpdb->query( 'update ' . $wpdb->prefix .'term_relationships set object_id = ' . $convertedrows . ' where object_id = ' . $id );
  15.  $wpdb->query( 'update ' . $wpdb->prefix .'postmeta set post_id = ' . $convertedrows . ' where post_id = ' . $id );
  16.  $wpdb->query( 'update ' . $wpdb->prefix .'comments set comment_post_ID = ' . $convertedrows . ' where comment_post_ID = ' . $id );
  17.  $convertedrows++;
  18. }
  19. /** ID默认由1开始 */
  20. $convertedrows = 1;
  21. /** 查询数据库文章表所有记录 */
  22. $sql_query = 'SELECT ID FROM ' . $table_prefix . 'posts ORDER BY ID ASC';
  23. $all_post_ids = $wpdb->get_results( $sql_query );
  24. /** 有返回值时则执行循环 */
  25. if ( is_array( $all_post_ids ) ) {
  26.  foreach ( $all_post_ids as $post_id ) {
  27.   change_post_id( $post_id->ID );
  28.  }
  29. }
  30. /** 重新设置文章ID自动增加的起点 */
  31. $wpdb->query('alter table ' . $table_prefix .'posts AUTO_INCREMENT = ' . $convertedrows);
  32. echo 'Total:'. $convertedrows .', It\'s ok! ';
  33. ?>

友情提醒

如果你使用了文章 ID 作为固定链接,那么重新排列文章 ID 的操作将改变所有文章的网址,通过搜索引擎访问时会出现大量的404访问或者文章错乱,这无疑对 SEO 是巨大的不利。而如果你的文章中创建了Tag关系的连接,那么也会因此而失效,所以请权衡好利弊后再使用!

WordPress文章ID重新排序教程