多くのプログラマーは、自分のコードに対して非常に追求心を持っています。私も例外ではありません。WordPress 中毒の愛好者として、WordPress の記事 ID が連続していない問題は常に心にあります。実際、2 年前には半分解決していました。その原理は、記事を削除するときに削除された記事の ID を記録し、記事を書くときにそれらの削除された記事の 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 テーブルから最小および最大の記事 ID を取得し、すべての使用済みの記事 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