WordPress获取不连续的文章ID

张子凡 WordPress优化 2023-08-03 14:33:20 阅读(...) 评论(0)

大多程序员对自己的代码都还是拥有极致的追求,子凡我也不例外,作为 WordPress 中毒爱好者来说,WordPress 文章 ID 不连续的问题总是萦绕在心中,其实早在两年前我就有解决一半的问题,其原理就是当删除文章时记录删除文章的 ID,然后写文章的时候就去取回这些被删除文章的 ID 来用。

WordPress Post ID

虽然似乎解决了问题,但是这个功能只能对往后的新内容操作执行,而对于对于像我们泪雪网这样运营多年的老网站来说还无法获取到之前删除过的文章 ID,那么今天子凡就来解决一下这个问题,处理方式也非常简单,就是通过以下代码获取数据库中文章表 wp_posts 中的不连续 ID,将跳过的 ID 查询出来即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//WordPress 获取不连续的文章 ID by Fanly https://zhangzifan.com/wordpress-get-skip-post-id.html
//require('./wp-load.php'); //如果是在别的目录运行记得加载 wp-load.php
 
global $wpdb;
 
// 获取最小和最大的 post ID
$min_max_ids = $wpdb->get_row("SELECT MIN(ID) AS min_id, MAX(ID) as max_id FROM {$wpdb->prefix}posts", ARRAY_A);
 
// 获取所有已使用的 post ID
$used_ids = $wpdb->get_col("SELECT ID FROM {$wpdb->prefix}posts");
 
$missing_ids = array();
 
// 遍历从最小到最大的所有 ID,找出未使用的 ID
for ($i = $min_max_ids['min_id']; $i <= $min_max_ids['max_id']; $i++) {
	if (!in_array($i, $used_ids)) {
		$missing_ids[] = $i;
	}
}
 
// 打印所有未使用的 post ID
print_r($missing_ids);

这段代码首先获取 wp_posts 表中的最小和最大的 post ID,然后获取所有已使用的 post ID。然后它遍历从最小到最大的所有 ID,并检查每个 ID 是否在已使用的 ID 列表中。如果不在,那么就把这个 ID 添加到$missing_ids 数组中。这段代码可能需要一些时间来运行,特别是当有大量的文章和大量的不连续 ID 时。

虽然可以找出未使用的 ID,并且通过开发让 WordPress 自动使用这些 ID,但也不能保证这些 ID 将会保持未使用。而且手动设置 WordPress 的 ID 可能会导致数据不一致和其他问题。所有大家开发时根据自己网站实际情况和需要来使用,当时肯定也可以在使用这些新 ID 时做一些判断来避免。

注明:require(‘./wp-load.php’); 这行代码的目的是引入 WordPress 的主要配置文件(wp-load.php),使你的脚本可以使用 WordPress 的函数和类。然而,实际的文件路径可能会根据你的脚本所在的位置和 WordPress 安装的位置有所不同。’./wp-load.php’ 假设你的脚本和 wp-load.php 文件位于同一目录下。如果你的脚本位于不同的目录,你可能需要使用不同的路径。例如,如果你的脚本位于一个子目录中,你可能需要使用 require(‘../wp-load.php’);,这样就可以向上一级目录查找文件。

更多关于WordPress优化及疑问可以添加QQ群:255308000

除非注明,否则均为泪雪博客原创文章,禁止任何形式转载

本文链接:https://zhangzifan.com/wordpress-get-skip-post-id.html

留言评论

登录 后留言