パンくずリストの区切り

 使用するテーマ(kvarken)に標準でついていたパンくずでは、区切り文字が”}”になっており、自分としては気に入らなかったので、修正したいと思ったんだけど。この区切り文字を”>”か”/”にできないだろうか。

 でも、カスタマイズのメニューでは、区切り文字を変更するような項目がなく、メニューからでは実現しなさそうだ。

 自分は数年ぶりにwordpressをいじる上に、phpを全く覚えていないんだけど、そんな自分がソースを見た感じでは、”|”にはカスタマイズのメニューで変更できるようです。あると分かって探してみると、カスタマイズのメニューに該当する箇所が見つかった。でも 変えたいのは”>”か”/”。

 直接スクリプトを書き替えてしまうのが簡単なのだけど。現在のwordpressに存在する親テーマ・子テーマという概念があり、親テーマを直接書き換えるのは最後の手段にしたかった。数年前はそんなのなかった気がする。

 親テーマというのは、配布されてるテンプレートで、子テーマというのはそれをもとに自分でカスタマイズした差分を作れる仕組みらしい。変更したい部分の含まれているファイルを親テーマの中から探して、変更したあと、子テーマのディレクトリに入れておけば、子テーマの内容を優先して表示されるみたい。

 こうすることで、親テーマがアップデートした時にも子テーマのファイルはそのまま残るので、アップデートによって自分が施したカスタマイズが消えるという現象を回避できるわけだ。なるほどと思ったが、ファイル単位なので、子テーマで変更しているファイルの、もとになる親テーマのファイルで、親テーマが重大なアップデートをした場合など、支障は出てくる気がするな。

 さて、現在使っているテーマはkvarkenという読み方が分からないテーマ。このテーマ以外は、じっくり構造を見てみようと思ったこともないので、何が一般的で、何が独特なのかさえ分からない。wordpressではそういう流儀があるのか、このテーマ独自の流儀なのか、分からないけれども、少なくともこのテーマにおいてパンくずに関するソースは、incというサブディレクトリの中にあるみたい。画面に見えている語句・文言を検索すれば見つかるだろうと思ったら、画面に見えてる語句・文言は、辞書ファイルみたいなところに含まれており、検索するとそこがヒットする。どうも多言語化対応のために、そういう仕組みになっているらしい。辞書ファイルを見ると、その語句・文言を呼び出している変数が分かるから、それを今度は検索して…と一つ手間が増える感じ。

 そして見つけた該当箇所・該当ファイルを早速書き換えて、子テーマにディレクトリを作って放り込んでみたけれど、表示されるウェブページとしては一向に反映されない。どうしてだろうと模索していると、一週間くらいかかったけど原因が分かった。多くの子テーマの作り方の説明サイトでは、「子テーマのディレクトリに改造したファイルを置けば、自動的にそちらが有効になる」と記述されている。うまく動かない場合は、ファイル名が違うんじゃないかとかそういうレベルの話になっている。でも、自動的に有効になるのは、テーマのルートになるディレクトリの話で、そこからサブディレクトリの中にあるファイルとは扱いが違うらしい。自動的に有効になるのは、ルートだけで、サブディレクトリの中はそうならない。

 でも初心者向けに子テーマの作り方について説明しているサイトではそのことを言及していないことが多い。「子テーマのサブディレクトリ内にあるファイルは、自分で設定しない限り有効にならない」。これが分からず、だいぶ時間を浪費した。

 そこで、改めて子テーマのファイルを読むように設定したら、今度はエラーが出る。関数についてのエラーのようです。同名の関数を二重に登録しようとしていると。親テーマで設定されている関数名を、子テーマでも設定しようとするので、二重に設定することになってしまうようだ。親テーマのファイルも、子テーマのファイルも全部読み出す仕様なのか…。それはそうなる。

 そこで、自分で変更できる子テーマでは違う関数名にして、そちらを読み出すように呼び出すほかのファイルを変更してみようと思ったのですが、その方法だと、直すファイルが多くなりそう。親テーマ・子テーマの仕組みについて最初に危惧した子テーマのファイルが多くなればなるほど、親テーマのアップデートに伴う子テーマとの乖離するといった現象が心配され。

 次に、PHPでは、いったん設定した関数を削除する方法はないのかと思った。親テーマで先に設定された関数を、子テーマで削除してから、改めて設定すればいいのではと。調べたところ、runkit関数というのを使えばいいらしいのだけど、うまくできなかった…。

 結局のところ、最後の最後に親テーマを直接編集する手段に出た。

 一か月も遠回りしたことになる。親テーマ・子テーマの仕組みがわかってきたので、無駄ではないと思っているけれども…。最終的にとった行動としては、調べる前に最後の手段(とりたくない行動)になってしまったこと、親テーマ子テーマというシステムがなければとっとと取り掛かってた作業になっているので、徒労感はすごい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です