スポンサーリンク

【WordPress】スラッグをリネームした時に自動的にリダイレクトされるのを止める

アイキャッチ WordPress

WordPressで、投稿やカテゴリなどのスラッグをリネームした際、古いスラッグに新しいスラッグへのリダイレクトが自動的に設定されます。

これは便利な一方で、古いスラッグ(URL)に新しいコンテンツを配置したい場合などに問題が発生します。

WordPressのリダイレクト設定はデータベースのwp_postmetaテーブルに_wp_old_slugの値として保存されているようなので、この値を探して削除することで手動で取り除くことも可能です。

また、もう一つの手段として、フィルターフックを使って一時的にこれらのリダイレクトを無効にする方法があります。

自動リダイレクトを行うアクションを取り除くフィルターフック

functions.phpなどに以下の2行を追記します。

remove_action('template_redirect', 'wp_old_slug_redirect');
remove_action('template_redirect', 'redirect_canonical');

正確な仕様が見つけられていないのですが、リネームなどによって書き換えられたスラッグは上記のいずれかのアクションで新しいURLに置き換えられるようです。

パーマリンク関連のフィルタ調整を行った場合は、WordPress管理画面の「設定」→「パーマリンク設定」を開き、上書き保存(設定内容は何も変更せずそのまま「変更を保存」する)を行っておくことを忘れないでください。

コードリファレンスなどを見る限り、wp_old_slug_redirectのフックでリダイレクトが取り除けるようなのですが、カテゴリなどのタクソノミーのスラッグを変更した場合はredirect_canonicalが効いているようで、1行目の記述だけではうまく動きませんでした。URLが404だったり同名のタクソノミーがいたりいなかったりでちょっと動作が変わっているようです。

ちなみに、スラッグのリネームを繰り返したりリダイレクトのプラグインなどを使ってリダイレクトループが発生したような場合も上記のコードでとりあえず止めることができます。(本来残しておきたいリダイレクトも止まってしまいますが。)

補足

なお補足ですが、WordPressはパーマリンクを探索する際、完全一致ではなく前方一致で探す仕様になっています。

たとえば、パーマリンクが/my-favorite-thingsのようなスラッグの投稿があった場合、/my-favoriteや、/my-favなどはすべて/my-favorite-thingsのページにリダイレクトします。このあたりもトラブった際の症状の切り分けを行う際にハマりがちなポイントなので注意してください。

WordPress&Cocoonのお悩みにお答えします

クラベルではWordPressのブログサイト構築、Cocoonテーマの導入やカスタマイズに関するご相談を承っております。

お困りの方はぜひ一度お問い合わせください。また、現在ココナラをつかったサービス出品も始めてみました。お悩みおひとつの解決からお手軽にお申込みできますので、こちらもぜひあわせてご覧ください。

最短当日★ワードプレスの疑問質問トラブル解決します ご相談無料!初心者歓迎!優しく丁寧、徹底的にサポートします!
Cocoonテーマサイト構築&カスタマイズします ご相談無料★公式サポート対象外もOK!プログラミングはお任せ
WordPressWeb開発
この記事は良かったですか?
最新情報をお届けします。
クラベル(Cravel)をフォローする
スポンサーリンク
この記事を書いた人
クラベル(Cravel)

Webサイト構築、Wordpressのカスタマイズやphpプログラミングなどやってます。BPM(ビジネスプロセス管理)、BPR(業務改革)コンサルなどにも従事。世の中すべてピタゴラ装置をモットーに自動化します。ブログは省エネ運営中。Cocoonカスタマイズやゲーム、ガジェットの話題など。

プロフィール詳細、お仕事のご依頼はこちら

クラベル(Cravel)をフォローする
クラベル

コメント

タイトルとURLをコピーしました