【2021年版】WordPressでパーマリンク設定が保存されない(変更できない) を解決

WordPressのパーマリンク設定を「数字ベース」から「カスタム構造」に変更しようとしたのですが、何度「変更を保存」しても保存されませんでした。

ここではその解決方法と予想される原因を記載します。

最後の「後日談」までしっかり読むことをお勧めします。

WordPress

確認環境

  • Windows 10
  • WordPress 5.6

問題

Wordpress 5.6 パーマリンク設定画面

パーマリンク設定を「数字ベース」から「カスタム構造」に変更して「変更を保存」ボタンをクリックすると「数字ベース」に戻ってしまうのです。

解決しなかった方法

私の場合、以下のことを試しましたが解決しませんでした。

最後にスラッシュを入れる

https://sapporo-president.com/archives/%post_id%

ではダメで、最後にスラッシュを入れ

https://sapporo-president.com/archives/%post_id%/

のようにすると解決することがあるようです。

以下のサイトを参考にやってみましたがダメでした。

WordPressで「パーマリンク」が消えた?「パーマリンク設定」で「カスタム構造」で保存しても戻ってしまう問題の解決方法

.htaccess を更新する必要があります。

保存しようとしたときに「.htaccess を更新する必要があります。」というメッセージが表示され保存できないケースがあるようです。

WordPressのパーマリンク設定を変更する方法

私の場合は、そもそもこのケースに当てはまらず、メッセージは表示されませんでした。

キャッシュクリア

キャッシュクリアで解決するとかしないとか、本当にやめてほしいです。

簡単に言わないでほしいですし、システム側はキャッシュクリアを必要としないシステムを作成してほしいものです。

無駄にキャッシュクリアしてしまいました。

キャッシュクリアは「ただ」じゃないんだぞ、ということを分かってほしいところです。

私が解決した方法

私の場合「数字ベース」から「カスタム構造」に変更するのが目的でした。

ラジオボタンで「数字ベース」から「カスタム構造」に変更するとURLの形式は

https://sapporo-president.com/archives/123

から

https://sapporo-president.com/archives/%post_id%

に「表記上」は変わるのですが、「内容的」には同じものになります。

そこで「カスタム構造」に変更した上で、URL形式を

https://sapporo-president.com/archives/%post_id%?x=1

というように「?x=1」を追加してみました。

(引数を追加しただけですので、これでも以前と同じURLでこれまで同様にアクセスできます)

このようにしてから「変更を保存」をクリックすると「カスタム構造」として保存することができました!

(内部的に良くない設計で動作しているのが分かります…)

その上で、URL形式を元の

https://sapporo-president.com/archives/%post_id%

に戻しました。

もちろん「カスタム構造」として保存されるようになっています。

1度保存すると何かフラグが立つのでしょうか。

余談

内部的な動作の予想になりますが、Wordpress側では「基本」「日付と投稿名」「月と投稿名」「数字ベース」「投稿名」「カスタム構造」という設定値を「ちゃんと」持っていないような動作に思えます。

Wordpress 5.6 パーマリンク設定画面

URLのパターンから設定値を逆算しているような…

ちゃんと考えて、ちゃんと設計して、ちゃんとコーディングして、ちゃんと動作確認して、それからリリースしてほしいものです。

原因究明というか解決するまでに数時間、この記事書くのに小一時間。

こんなことをするためにWordpressを使っているのではないのです。

後日談

「カスタム構造」にしたかった理由

「数字ベース」ではなく「カスタム構造」に設定したかった理由なのですが、

投稿画面でパーマリンクの編集ができず、「カスタム構造にすればパーマリンクを編集できる」という偽情報を掴まされていたというのが分かりました。

なので、「カスタム構造」にしているにも関わらず、URL形式を

https://sapporo-president.com/archives/%post_id%

のような設定にすることに意味はありません…

そして、何度か設定し直していると結局また「数字ベース」に戻ってしまいました。

設定で「カスタム構造」を選んだとか選んでないとか関係なく、URL形式を

https://sapporo-president.com/archives/%post_id%

のように設定すると、それはもう「数字ベース」ということです。

最高級に分かりづらい設定です。

左のラジオボタンを変更したときに、右のテキストボックスも変更されるという奇妙な動作で「おかしい」ことに気付くべきでした。

やっと分かった設定の謎

余談その他で書いた内容と大体同じなのですが

これ、

左のラジオボタンを選択して、「カスタム構造」を選んだ場合のみ右側のテキストボックスの値を入力する

そんな感じの設定に見えますが、内部的にはまったく違うのでしょう。

内部的に持っているのはおそらくURL形式のみで

(数字ベースの https://sapporo-president.com/archives/123 と同じ意味である)

https://sapporo-president.com/archives/%post_id%

↑こんな感じで保存されると、設定画面側で「数字ベース」として「表示」されるのでしょう。

「数字ベースである」という情報はDB上には持っていないと思われます。

「基本」「日付と投稿名」「月と投稿名」「数字ベース」「投稿名」「カスタム構造」という設定なんてものは初めから存在しないのです。

それを選んだときに、URL形式をどうするのか決めているだけなのです。

みんなが混乱するから、気持ち悪い事しないでほしいです=>WordPressを開発している人

やむにやまれぬ負の遺産があるのは理解できますが…

これ、本当に極悪設定です。

画面で設定した通りの内容を保存するように設計してください。

以上。

後記

最後までお読みくださりありがとうございます。

こんなに更新したのに、現在はほぼ誰も見ていないゴミカスクズ無価値ブログです。

よければ(はてな)ブックマークや拡散をお願いいたします。

更新の原動力として励ましが欲しいのです…<(_ _)>

当ブログ内お薦め記事

記事はここまでです。