Fanly

Fanly

一个摸爬打滚于 IT 互联网的追梦人!

WordPress如何獲取不連續的文章ID

大多數程式設計師對自己的程式碼都有極高的追求,我也不例外。作為一個 WordPress 愛好者,我一直關注著 WordPress 文章 ID 不連續的問題。實際上,兩年前我已經解決了一半的問題,解決方法是在刪除文章時記錄被刪除文章的 ID,然後在撰寫文章時使用這些被刪除文章的 ID。

ddb5ae295f86b9eb98499cc7bfb069b3_WordPress-Post-ID

雖然這個功能似乎解決了問題,但它只能對新內容起作用,對於像我們泪雪網這樣運營多年的老網站來說,無法獲取之前刪除的文章 ID。所以今天我來解決這個問題,處理方式非常簡單,只需通過以下代碼從數據庫中獲取文章表 wp_posts 中的不連續 ID,然後查詢跳過的 ID 即可。

//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

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。