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

2021-01-04

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

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

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

WordPress

確認環境

  • Windows 10
  • WordPress 5.6

先に簡単に結論というか原因を

2021年06月09日追記

設定値が保存されない原因を簡単に説明したいところなのですが、背景というかWordPressの設定自体が変態すぎて「簡単に」というのが難しいのですが頑張ってみます。

この設定、

左側で選んだ「基本」「日付と投稿名」や「カスタム構造」が設定値として保存されるのではなく

カスタム構造の右側のURL形式から逆算して左側の「基本」「日付と投稿名」や「カスタム構造」を決めて(設定値としては保存せずに)表示してるだけなのです。

プログラミングをしたことがない人にとっては意味わからないくらい気持ち悪い設定ですよね。

これを理解できると解決方法が分かってきます。

問題

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」を追加してみました。(実際にはxじゃなくても1じゃなくてもいいです。)

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

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

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

要するに「数字ベース」なのに「カスタム構造」だと思い込ませるということです。

その上で、URL形式を元の

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

に戻しました。

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

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

2021年06月09日追記

「?x=1」を削除すると、「数字ベース」に戻ってしまいますね。

というかもともと「数字ベース」だとか「カスタム構造」だとかの設定値を持っていないのですから。

余談

(2021年06月09日に追記した「先に簡単に~」と同じ内容になりますが)

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

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

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

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

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

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

後日談

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

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

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

(2021年06月09日 ↑ちょっと勘違いの可能性があるので、再度確認してみます。)

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

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

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

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

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

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

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

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

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

やっと分かった設定の謎

(こちらも2021年06月09日に追記した「先に簡単に~」と同じ内容になりますが)

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

これ、

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

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

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

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

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

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

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

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

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

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

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

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

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

以上。

後記

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

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

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

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

当ブログ内お薦め記

記事はここまでです。