【WordPress】記事URL(スラッグ)を変更しているのに、違う記事が表示される 【_wp_old_slug】

  • 投稿 : 2014-11-18
  • 更新 : 2016-01-13

URL(スラッグ)を変更しているのに、違う記事が表示される


レアケースですが、別の投稿記事で過去のスラッグが同じものが存在した場合は、先に過去のスラッグが登録された記事のほうに優先してリダイレクトされます。

何にせよ余計な処理が入り込んでしまうので、基本的には一度公開されたURL(スラッグ)は変更しないほうがいいと思います。
WordPress 投稿記事のスラッグを変更しても旧URLでアクセスできる仕組み - 130単位

以前から実は、変な現象にさいなまれていて、ちょっと前に原因がわかったので書いておきます。

記事URL(スラッグ)というのは、黄色い部分ですね。
これを変更すると、記事URLを変更できるのですが、なぜか変更しているのに別記事がヒットするというのがあったわけです。

Wordpressには、
・変更前のスラッグでもアクセスできる親切な機能がある
・変更前のスラッグは、削除も変更もできない
・スラッグは、全記事で一意でないとダメ

この条件があるために、
過去に一度使ったスラッグ(記事URL)があると、それを変更したとしてもその情報が残り
新しい記事で、現在は使ってないはずの記事URLを使用しているのに、うまく動作しないということになります。

原理は分からなくても、データーベースに古い情報が残っているために誤動作しますという理解でよいかと思う。

wp_postmetaの_wp_old_slugは削除したほうがよい

SELECT *
FROM `wp_postmeta`
WHERE `meta_key` LIKE '_wp_old_slug'

wp_postmetaテーブルで
meta_keyが「_wp_old_slug」
の物を削除すればOKです。

引っ越しとかで、記事をインポートして、手作業でスラッグ(記事URL)を付け替えたりしている場合に、このデータが作成されるかと思います。

データのつくり方は簡単で、
新規時記事を作成して保存。その後、編集でスラッグ(記事URL)を変更して保存すれば、その記事IDにたいして上記のデータが作成されます。

あとこのテータがあると、Wordpressが少しだけ遅くなるので、必要なければこのデータは削除しておいた方がよいと思います。
参考:
[WordPress]_wp_old_slugの肥大化 | モノグサにお灸 | 明日なまけるために、今日はがんばってみる。

補足

[解決済み] 4.4アップデート後、いくつかの投稿が表示されず勝手に他のページに転送|ja.forums.wordpress.org

追記:2016/01/13
一度使用された投稿 URL が再利用されると、誤った投稿にリダイレクトされる問題の修正
WordPress › 日本語 « WordPress 4.4.1 セキュリティとメンテナンスのリリース

もしかすると、これかも。やっぱり、バグ的な動作だもんなぁ。

スポンサーリンク