torounit/custom-post-type-permalinks

プラグインバージョンアップ時に設定が外れる

Closed this issue · 10 comments

プラグインのバージョンアップを行うと

一般設定>パーマリンク設定>カスタム分類のアーカイブのパーマリンクを変更する
のチェックが外れてしまい、既にチェックを入れて実装していたURLが404になります。

チェックお入れて保存しなおせば戻ります。

Version 2.0.1からVersion 2.2.0のアプデートで再現

追記

ver up 後、

  • 設定が外れた状態でそのままパーマリンク設定を保存したあと、再度チェックを入れて保存OK
  • 設定が外れた状態で再度チェックを入れて保存NG

一旦、チェックを外して保存したあとでないと、もとに戻せませんでした。

Oh... 2.1 あたりでデフォルト値を指定したりとかいろいろしたんですがその影響ですね。

設定が外れた状態でそのままパーマリンク設定を保存したあと、再度チェックを入れて保存OK

これすればパーマリンクストラクチャーは問題なさ気なので、
get_option( 'no_taxonomy_structure' ) update_option( 'no_taxonomy_structure' ) にかかる問題だと思われますー

Twitterで以前ちょっと話題にしましたが、これうちの環境でもまだ発生してます。 (v2.2.0)
サイトによっては

設定が外れた状態でそのままパーマリンク設定を保存したあと、再度チェックを入れて保存OK

なこともあるんですが、ダメなときは何回チェックを入れ直しても、チェックのない状態に戻ってしまいます。保存できたときとできないときの条件は不明です。

先ほど、とあるサイトはデータベースを直接いじってwp_optionsにno_taxonomy_structure = 1を挿入して対応しました。

no_taxonomy_structure が true だとチェックが外れるんですよね。今の仕様は。
デフォルト値以前は存在しなかったのですが、2.1あたりから デフォルトtrueにするようにしたので、どっかのタイミングで wp_option に値を突っ込むようにすれば良いんですかね。

@mypacecreator 紛らわしいんですが、チェックが出る場合は no_taxonomy_structure = 0 のときです。

@torounit あっなるほど。。。
今その環境のDB確認したところ、no_taxonomy_structureのvalueは空になってました。
ためしにDBからno_taxonomy_structureの行を削除して、再度試したら前述の状態が再現しました。(何度「これをオンにした場合、カスタムタクソノミーのパーマリンクは・・・」にチェックして変更を保存ボタンを押しても、値が保存されない)

さらに、再度行挿入したら直ったので、DBにno_taxonomy_structure が存在しないとき、新規に作れない、という問題っぽいです。

  • 2.0 以前は値が無い場合 false 扱いだったのでチェックが入っていた。
  • 2.1 以降は値が無い場合 true なのでチェックがない。
  • アップデートのときのみ、 no_taxonomy_structure をfalse にするべき。

可能であれば2.0系からのアップデート時に、add_option( 'no_taxonomy_structure', 0 ) を挿入。