WordPress:固定ページの親指定で子のパーマリンクが強制変更される

タイトルの通りだ。固定ページに親子関係を設定すると、子のパーマリンクが勝手に変更されてしまう問題がある。

問題

設定>パーマリンクを以下のように、カスタム構造の「%postname%」にしている。

ここで、二つの固定ページabcとxyzを作成し、後者を前者の子にすると、後者のURLが勝手に/abc/xyzとなってしまう。ページ編集で見てみると/abc/の部分は固定されて変更不可能で、xyzの部分しか編集できない。

つまり、どうあっても「親のスラグ」が、このURLの中に強制的に含まれてしまうのである。しかも不思議なことに、/xyzでもアクセスが可能なのである。/abc/xyzにリダイレクトされる。

これについての日本語での議論が探せないのだが、この勝手なふるまいに皆さん困っていないのだろうか?親無しにしたり、親を変更したりするだけでURLが変更されてしまうのだが、構わないというのだろうか???

英語では以下のような議論がある。

前者に解決策は提示されていない。後者では、Custom Permalinkプラグインを使えと言う。

Custom Permalinkプラグイン

これで問題は解決できる。単純にCustom Permalinkを検索・インストール・有効化するだけだ。後は、各固定ページのURLを自由に設定できる。

しかし、唯一の問題としては、重複URLを作成できてしまうことだ。つまり、既にxyzというページがあるのに、新規投稿・新規固定ページにxyzという名前をつけることができてしまう。そして、これを公開して表示させると、古い方のページが表示される。

これでは使えないだろう。少なくとも「重複してるよ」との警告はしてほしい。

Permalink Manager Liteプラグイン

次に試したのはPermalink Manager Liteだ。同じような機能だ。編集するには「パーマリンクマネージャー」ボタンを押すという一手間が必要だが、ただし重複はチェックしてくれる。

とりあえずこちらで行くことにする。

どこで有効にすべきか?

WordPress:これならわかる! Plugin Load Filterの設定に書いたように、プラグイン導入の際には、有効にする場所を限定したいのだが、このプラグインは管理画面のみで大丈夫のようだ。ただし、その場合には自動リダイレクトがされなくなる。これはRedirectionプラグインで行うことにした。