重新排列wordpress博客网站不连续的文章id
大家可能遇到过这样的问题,文章id一下飚到三万,文章数量也不够1000篇。
要想解决这个问题,就必须清楚WordPress的id分配机制:wordpress的id不是只用来分配给文章的,即有多少篇文章,ID就为多少。实际上,wordpress网站中的媒体文件、菜单、页面、文章、文章/页面自动保存,甚至修改文章/页面都会被分配到一个ID,而这个ID是共用的一个ID分配机制。
比如:此时的最高ID为1,你用五分钟的时间发布了一篇文章,文章中上传了10张图片。
这一系列的操作之后,你再发布下一篇文章时,文章ID就会变成17了。因为10张图片就占用了10个ID,wordpress默认情况下是 30 秒保存一次,保留最后的 5 个文章版本,这样ID就用掉了15个,再加上文章的一个ID,一共用了16个。(这里只是粗略的算一下)
正因为如此,所以我们的文章ID是不可能连续的。
如果想要ID连续的效果,可以将固定链接设置为/%postname%.html
。
然后在发布文章的时候,手动修改成数字。
重新排列wordpress博客网站不连续的文章id
下面WPMI(微信公众号:wordpress迷)给大家介绍一个重新排列文章id的方法。该方法只适合没有收录的新站,如果网站已经被搜索引擎收录了的话,请谨慎使用!谨慎使用!谨慎使用!
1、首先清理文章历史修订版本。
DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision';
2、清理修改文章时产生的冗余数据。
DELETE FROM wp_postmeta WHERE meta_key = '_edit_lock'; DELETE FROM wp_postmeta WHERE meta_key = '_edit_last';
3、新建一个php
文件,把以下代码写入php
文件,然后上传到wordpress
网站根目录,之后通过浏览器访问这个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! ';
当页面上出现 Total: 500, It\'s ok!
时,就说明重新排列文章ID成功了。【注:500 只是虚拟数据,与网站里的数据多少有关】
本文由 微信公众号:WordPress迷 原创发布。
著作权均归用户本人所有。独家文章转载,请联系本站管理员。获得授权后,须注明本文地址! 本文地址:https://www.jianzhanmi.com/sort-postid.html