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

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