广告位招租919838898

WordPress 重组文字ID(重新排序文章ID)

因为需要将一个网站的老数据删除,将个别分类重新拆分作为一个单独的网站。但分类里的文章ID已经为20000起步。

其实多少都无所谓,但我感觉做网站的多多少少有些强迫症,比如想我。

必须要将他的ID重新排列一下。

成为一个全新的站点。

所以我列出几种方法,这些方法都是网络收集,我只使用了其中一个方法。就是PHP文件生成。

所以我们先看我用过的方法。后面的几种自己酌情选用即可。

PHP文件执行法(本人使用过的)

因为是我自己使用并证实的方法,推荐大家使用该方法

先删除批量删除wordpress文章修订版本/自动草稿残留数据 ,点击进入查看删除即可。

注意:该文章中含有禁用方法。禁用后草稿什么的就不在生成ID。

清除了修订版本和草稿的一些残留文件后。

在网站的根目录创建一个PHP文件,假设为:id.php

代码:

<?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! ';
?>

保存后, 通过浏览器访问xxx.com/id.php

等待即可。

但这种方法费服务器资源,毕竟要重1开始排列。

当我执行了后,再次访问文章ID确实变了。

之前为21345.html的URL链接现在是800.html。

我一直想不明白命令是对的,为什么前面还有800个ID保留了?

这个其实是因为之前的媒体库也同样占用了ID。

我们使用SQL命令批量删除一些这些数据。

详细请看:WordPress 批量删除媒体库/解除图片文章联系/清空特色图片SQL命令

清空以后,再次运行id.php文件,第一篇文章的ID就成了6。

所以这是成功的方法。

主题的functions.php中加入以下PHP代码

这方法我没有试过。但同样收集起来给大家。

这样如果你只是单纯发文章,不发页面,不添加菜单,不上传媒体的话,基本上此后的文章ID是连续的,而且不改变之前已经发布的文章ID,不影响SEO:

// WordPress 3.8测试有效
function keep_id_continuous(){
  global $wpdb;  // 删掉自动草稿和修订版  
$wpdb->query("DELETE FROM `$wpdb->posts` WHERE `post_status` = "auto-draft" OR `post_type` = "revision"");  
// 自增值小于现有最大ID,MySQL会自动设置正确的自增值  
$wpdb->query("ALTER TABLE `$wpdb->posts` AUTO_INCREMENT = 1");
  }
add_filter( "load-post-new.php", "keep_id_continuous" );
add_filter( "load-media-new.php", "keep_id_continuous" );
add_filter( "load-nav-menus.php", "keep_id_continuous" );

该代码来自网络

SQL清空命令(没测试,使用请备份)

$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! ';
?>
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
广告位招租919838898
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索