今朝、本ブログサイトの管理画面を開いてみると「更新」が溜まっており、Wordpress 6.6のリリースが確認できました。それに伴うテーマやプラグインのアップデートもありました。
さては、自分の管理するWordpressサイトの全てをバックアップして、試しにテスト用のサイトをWordpress 6.6にアップデートしてみました。
ありゃ、「あさま」のまさか(その6)と同様にネズミが走り続けるまんまになりました。
そんなに暇でないのに困ったもんです。急ぎスケジュールを確認して、午前中ぐらいは大丈夫そうなことを確認して検証にかかりました。
結論。
どうやら、Wordpress 6.6にバグ?がある様子です。再確認のため、あさま開発サイトも6.6にアップデートしました。
症状は、管理画面の「メニュー」でメニューに階層を設定していると、下階層のメニュー項目が出力されないというものです。
子テーマ「あさまっこ」のJavascriptが下階層メニューを見つけられなくて止まってしまい、ネズミが走り続けるわけです。ないものはしょうがないよね。
一応、Wordpressの管理画面でメニュー構成を変更し、再登録とかしてみましたが、症状は変わりませんでした。
(追記2024.7.27)
今回の問題はWordpress 6.6.1にアップデートしても改善されませんでした。
致し方なく検証して、バグの発生位置を特定できましたので、対応した「あさまテーマ(親子丼セット)」をあさま開発サイトのダウンロードページに掲載しました。(バージョンに変更なしです。)
特定できたのは、wp_nav_menu()関数のパラメータdepthの指定でした。
デフォルト値は0 なのですが、わざわざ「’depth’ => ‘0’」と指定してあったのが事故原因になりました。今回、「//’depth’ => ‘0’」とコメントアウトしました。
ちなみに、「’depth’ => ‘2’」と文字列で指定すると二階層まで表示されて、「’depth’ => 0」と数値で初期値を指定すると問題ないという不思議な状態になってます。
(追記2024.7.29)備忘まで、
何が起こっているか推測(憶測)しました。
もしや、intval($n, 10)とするところを誤ってintval($n, 0)となっているのではないでしょうか?とすれば文字列’0’の場合だけ8進数として扱われて、えらいこっちゃになると思うのです。
最初は、intval($n=0)をintval($n, 0)としてしまったのかと考えましたが、この関数に$nを持ってくる前に初期値は処理済みであると考え直しました。
致し方なく、下階層のメニュー項目が存在しなければ操作をスキップするようにJavascriptに変更を加えました。出力されていない下階層メニューは表示されませんが、ページはちゃんと表示されるようになりました。
もちろん、以前のWordpressでも動作しますし、バグがフィックスされて下階層メニューが出力されるようになっても問題ないはずです。
あさま開発サイトのダウンロードページに「2024.7.17:あさまテーマ(親子丼セット)ver. 0.3.31(ZIP)(Wordpress 6.6のバグ?に対応しました。)」と掲載してあります。もちろん、バージョンに変更はありません。(ああ今は、下階層メニュー項目が出力されないので、メインメニューがダウンオープンしません。悪しからず。)
あさまをご利用で、もし、バックアップを取らずに6.6にしてしまった方はご利用ください。
子テーマ「あさまっこ」の’asamito’フォルダ内の’js’フォルダをまるっと差し替えれてください。(ソースファイルとしては’MainClass.js’だけです。)
でも、ほんとうにバグなのだろうか?仕様が変わったのかもしれません。
となると、バグフィックスを待たずに開発し直すということですか?それはやめてほしいなあ。そかさ。