MENU

WordPress REST APIで重複slugを避ける投稿前チェック

当ページのリンクには広告(PR)が含まれていることがあります。
WordPress REST APIで重複slugを避ける投稿前チェックのアイキャッチ

投稿前に同じslugが見つからなくても、公開記事の一覧だけを調べていた可能性があります。WordPressの投稿一覧は標準では公開済みを対象にするため、下書きや予約も必要に応じて確認します。

事前確認と保存後の確認を組にします。slugの検索だけで、同時に行われる別の作成まで防げると考えないようにしてください。

目次

候補slugを原稿一覧で点検する

まず、今回投入する原稿の中に同じslugがないかを調べます。同じ題名の記事を再作成するのか、既存記事を更新するのかも分けます。更新する記事なら、slugから推測するだけでなく既存の投稿IDを使います。

英数字の名前を決める場合も、機械的に短くすることだけを優先せず、記事の内容を見分けられる名前にします。公開済みURLを変える作業は、新規下書きのslugを決める作業と分けて扱います。

状態ごとに一覧を確認する

次は読み取り用URLの例です。example.comは説明用のドメインです。下書きなどの取得には認証と権限が必要です。

GET /wp-json/wp/v2/posts?slug=csv-summary&status=publish
GET /wp-json/wp/v2/posts?slug=csv-summary&status=draft&context=edit
GET /wp-json/wp/v2/posts?slug=csv-summary&status=future&context=edit

運用に応じてpendingやprivateの対象も確認します。取得できない状態がある場合は「重複なし」とせず、確認できた範囲を残します。投稿タイプが違うURLや、サイト固有のパーマリンク設定まで、この記事の検索だけで確認できるとは限りません。

作成直後のslugを読み直す

保存後に返ってきたidとslugを記録し、予定した値と比べます。WordPressが保存した値を使って管理画面やURLを確認し、入力側の予定値だけを結果の記録にしないようにします。

作成の直前と直後の間に、別の処理が投稿を作る場合もあります。事前検索は重複を減らす確認であり、サーバー側の排他制御や完全な重複防止を保証するものではありません。

重複や想定外の値が見つかった場合

結果が違った場合も、既存の記事を自動で削除したりURLを上書きしたりせず、原稿と保存結果を照合します。この記事では検索の考え方とURL例を示しており、実サイトの投稿作成やslug変更は行っていません。

スクロールできます
状態次に確認すること
既存の同じ記事がある新規作成を止め、そのIDを更新対象にするか判断
別の記事が同じ候補を使う内容を見分けるslugへ原稿側の候補を直す
返却slugが予定と違う今回のID、既存投稿、公開状態を照合
応答がなく保存結果が不明下書き一覧を確認してから再送を判断

関連する記事

公式資料

この記事を書いた人

Watanabeのアバター Watanabe サイト運営者

2020年よりブログ開始。
SEOが思いのほか性にあっていたようで現在に至る。
モットーは「勝率の高い選択をする」
AIは活用するが吉、最後は人間が息を吹き込む。
アートと科学を追求し、日々精進。
―――
収益:6~7桁をウゴウゴ。
サイト:ペラサイト~中規模サイトまで運営中。
案件:1000円以上の案件をメインに取組中。
打ち手:ブラックSEO~ホワイトSEOまで
―――

目次