LoginSignup
3
4

More than 5 years have passed since last update.

Wordpressで、固定ページとカスタム投稿の名前が被って、アクセスできなくなったときのはなし

Last updated at Posted at 2016-03-22

現象

Wordpressにおいて、例えば bookmark という名前の固定ページと、 bookmark という名前のカスタム投稿タイプは、同時に存在できません。
固定ページのパーマリンクと、カスタム投稿タイプのアーカイブが、どちらも /bookmark というURLをとりに行こうとするためです。

さてこれを、両方作成してしまうとどうなるか。 後に作成した方にアクセスできなくなります
しかもこちら、衝突に気づいて先に作成した方を リネームしたとしても、アクセスできなくなったままです。

どうやらWordpressは、ルーティングの情報(厳密に言えばmod_rewrite用の情報)を、dumpした形でDB内に保持しているようで、こちらが書き換わらないかぎりは、ルーティングが最新の状態になっているとは限らないようです。

対応

このDB内に保持しているルーティングの情報を、再度生成しなおすための、 flush_rewrite_rulesという関数がありました。これを使いましょう。

衝突しない名前に変更した上で、以下のようなコードを functions.php 等々に埋め込みます。

// ルーティング衝突をなおす
add_action('init', 'my_flush_rewrite_rules');
function my_flush_rewrite_rules () {
    flush_rewrite_rules( TRUE );
}

ただしこちら、けっこう重たい処理になっているようなので、 一度実行できたらすぐ元に戻す というような使い方がよさそうです。

なんらかのアクション(themeの切り替え時とか)にフックして実行するのもよいかもしれないですが、基本的にこれを実行するのはイレギュラーケースのときなので、必要なときだけスポットで実行するのがいい気がしております。

参考

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4