WordPressでテーマを作っていると、大抵はウィジェットエリア(dynamic_sidebar)を利用する事となると思いますが、たまに管理画面上に表示はされてるのにウィジェットをいくらセットしても保存されない(管理画面からも保存後に他のページにいって戻ってくると消えている)という現象がおこり何が何だかさっぱりな状態だったのですが、なんとなく原因っぽいのを見つけた気がするのでとりあえずメモ。

はじめに

現時点ではこれがバグなのか、それとも仕様なのかも判らないです。そしてこの解決方法が正しいものなのかも不明です。

ただ、自分の場合はこの方法で解決できたということで、同じ現象で悩んでいる人がいたらヒントになればいいなと思い、残しておきます。

改めて現象をまとめてみる

おおまかに今回はまった部分をまとめてみると、以下のとおりです。

原因

register_sidebar( register_sidebars ) 関数に配列を指定する際に、’id’の値に「大文字が含まれている」とこの現象が発生している可能性が高いです。

というのも普段使ってるようなサイドバーがちょっとしかないテーマならいいんですが、今回業務で作っていたテーマは沢山のサイドバーが複雑に配置されていたので、名前を管理するために、

「sb_category_firstSideNav」といった感じに一部キャメルケースを使って命名していました。(ホントはこれもあまり行儀の良い書き方では無いのかもしれませんが…)

そして、そのサイドバーでのみこの現象が発生し、それ以外のちょこちょことしたサイドバー(それらは全て「sb_footer」みたいに名前が1単語で完結していたためキャメルケースにならなかった)

解決法

全て小文字にする

そしてもし「firstsidenav」みたいになって読みにくいなら、スネークケースにする。

自分みたいに併用していて、記法に意味を持たせていた場合は、アンダースコアの数を増やすのも有りなのかもしれません。

例:sb__category__first_side_nav

 

とりあえずこれで保存はされるようになったっぽいので、今のところこれで様子見中です。また進展があれば書こうと思います。

“WordPressでregister_sidebar(s)で登録したサイドバーにウィジェットを入れても保存できない事がある現象” への3件のフィードバック

  1. 通りすがり より:

    同じ現象で途方にくれていたところ、このページをみつけました。試したところ見事解消されました。助かりました。ありがとうございました。

    • negi より:

      通りすがりさん
      お役に立てたようでよかったです。コメントありがとうございました!

通りすがり にコメントする コメントをキャンセル