URLスラッグの変更 新しいURLにリダイレクトさせない

Keyboard WordPress の設定

URL スラッグを変更したら、変更前の URL が変更後の新しい URL にリダイレクトされている投稿があるではないか。何故だろう?

いろいろと調べたところ ...
WordPress の仕様のようですね。この仕様を良しと思う方もいると想像します。私は自分の作ったページの本当の URL を管理したいので、変更前の URL は 404 (Not Found) を返して欲しいですね。この仕掛けは、データベースの「wp_postmeta テーブル」の「meta_key」において「_wp_old_slug 」の存在が関係しているとのこと。

以下の画像は、 phpMyAdmin で開いた「wp_postmeta テーブル」の例示です。なお「_wp_old_slug」で絞り込み済みです。

phpMyAdmin wp_postmeta テーブルの画面
phpMyAdmin wp_postmeta テーブルの画面

そのレコードには、投稿やメディアなどの post_id がたくさんありました。そして「meta_value」には、見に覚えのある値 ...
post_id 90 は画像、post_id 92 は投稿、 post_id 106〜109 は画像。これって、、、画像もリネームの度にレコードが増えていくことなのですよね。恐ろしや 恐ろしや !!
なお「wp_posts テーブル」内の ID が post_id の本体ですので興味のある方はご覧ください。

調査用の SQL クエリ (SQL 文) は以下の通りです。

なお、投稿の post_id の確認は「投稿一覧」の右上の「表示オプション」内の「ID」にクリックを入れれば一覧内に表示されます。または投稿の「タイトル」にオンマウスすれば、画面左下に URL が表示されるので「post=」に続く数値でも確認できます。

「投稿一覧」の表示オプション
「投稿一覧」の表示オプション
Post ID
オンマウス時に表示されるURL(この例示では post IDは 90)

確かに過去に URL スラッグを変更したことのあるレコードを削除するとリダイレクトがなくなりますね。私は「_wp_old_slug」をすべて削除することにしました。
一括削除用の SQL クエリ (SQL 文) は以下の通りです。
もちろん、テーブルのバックアップ等々、すべては自己責任でお願いします。

Slugs Manager プラグイン

プラグインを調べたら「Slugs Manager」なるプラグインがありますね。「使用中の WordPress バージョンで未検証」でしたが動作します。

Slugs Manager
Slugs Manager

「古いスラッグ」と「現在のスラッグ」が表示されているので、見やすいですね。
なお、操作を確認したところ「選択した古いスラッグを削除する」は、選択したスラッグだけではなく投稿 ID 単位 (同じ投稿 ID のすべて) で削除されるようです。
選択した古いスラッグを削除する」と「すべての古いスラッグを削除する」の2つの選択肢しかないので操作は簡単です。phpMyAdmin が使えない場合、お試しください。