こんにちは。
Welcart バージョン1.7 より、子テーマを利用している場合の wc_templates 及び usces_cart.css の仕様が変わりました。 Welcart バージョン1.7以前で、子テーマに wc_templates の全てのテンプレートと usces_cart.css を置いていない場合は、スタイルが崩れるなどの影響が出ますので子テーマの修正が必要となってきます。 以下、その修正方法についてご案内させていただきます。
目次
子テーマの必要性
WordPress の高機能化と共にテーマも年々複雑になってきて、にわか仕込みではオリジナルテーマを作るどころか、既存のテーマをカスタマイズすることすら難しくなってきています。 また、高機能故にリリースしたテーマの修正更新も頻繁に行われているようです。 このような状況下で、手に入れたテーマをそのままカスタマイズしているショップでは、テーマのアップグレードができないために、バグや脆弱性がそのまま残ってしまうということになっているのが現状かと思います。 このようなことにならない為にも、テーマをカスタマイズする場合は子テーマを作成することがとても重要です。
WordPress には、元となるテーマ(親テーマ)の機能やデザインを継承しながら、新たにテーマ(子テーマ)を作る仕組みがあります。 この仕組みを利用してテーマを作成(カスタマイズ)した場合、親テーマは一切改変しませんので、修正リリースが出た時は、何も気にせずに親テーマのアップグレードが可能となります。 もちろん子テーマの作り方次第では絶対安心とは言い切れませんが、その影響を最小限に抑えることができます。
しかし、元となる親テーマが、子テーマを作ることをしっかりと意識した作りになっていないと、子テーマの作成に手間がかかったり、アップグレードの影響が出やすくなってしまいます。 そこで私たちは、長く安心して利用できるテーマ作りを目指している制作者のみなさんのために、子テーマ作りに最適化された Welcart 専用の親テーマ(Welcart Basic)を開発してご提供したいと考えています。
Welcart の子テーマへのアプローチ
さて、Welcart 専用テーマには、wc_templates という専用のテンプレート群と、usces_cart.css という専用のスタイルシートがあります。 子テーマを作る場合、これらは継承されるべきものと考えます。 つまり、子テーマにこれらのファイルを設置しない場合は、親テーマのテンプレートやスタイルシートが適用されるというのが本来の仕組みのはずです。 しかし現在の Welcart は、子テーマにこれらのファイルが無い場合、親テーマのものを読まずに Welcart 本体の内蔵テンプレートや内蔵 usces_cart.css を使ってページを生成しようとします。 この仕様では残念ながら、親テーマのデザインを継承できずにスタイルが崩れてしまう事になり、親テーマの wc_templates と usces_cart.css を子テーマにコピーしなくてはいけないことになってしまいます。 これでは、親テーマでこれらのファイルの更新があってアップグレードしても、子テーマではその恩恵を継承することができません。
子テーマには必要最低限のファイル(テンプレートやスタイルシート)を置いて、できるだけ親テーマを継承することが望ましい形です。 そこで、Welcart の、該当ファイル(wc_templates と usces_cart.css)を読み込む仕様を変更して次のようにいたしました。
- 親テーマに該当ファイルがある場合はそれを読み込む
- 子テーマに該当ファイルがある場合は、子テーマのそれを読み込む
- 子テーマに該当ファイルが無い場合は、親テーマのものを読み込む
- 子テーマにも親テーマにも該当ファイルが無い場合は、Welcart 本体のものを読み込む
この仕様変更で影響が出るケースは、親テーマに wc_templates(全てのテンプレート)と usces_cart.css があり、子テーマにはその一部もしくは全てが無い場合となります。
Welcart の仕様変更による対処法
この仕様変更によって影響が出るのは、子テーマを使用しているサイトのみです。 まず、親テーマに wc_templates フォルダがあるかを確認します。 その配下にも cart や member といったフォルダがありますので、それらのフォルダの中にあるテンプレートファイルを全て確認します。 そして、それらのテンプレートが子テーマにも同じようにあるかを確認して、もし無いものがあった場合は、親テーマから子テーマにテンプレートをコピーします。 元々子テーマにあるファイルを上書きしてしまわないよう、あくまでも無いものだけをコピーしましょう。
この時点で、フロントにどのような変化があったかを一度確認してみましょう。 ほとんど影響が無いことを祈りますが、レイアウトが崩れているようでしたら、コピーしたテンプレートを修正しなくてはいけません。
次に、usces_cart.css をチェックしてみてください。 テンプレートと同じように子テーマに無い場合は、親テーマからコピーして子テーマに置いてください。 再度フロントを確認して適宜修正していきます。