サイトアイコン 日々の気づきを共有しよう!!

WordPressを子テーマで運用するリスクについて

最近ではWordPressでサイト運営する上でも、セキュリィティ対策に時間を取れらる事が多くなりました。

昨年は常時SSL対応に労力を費やしました。

また、WordPress本体だけでなく、プラグインやテーマの脆弱性も指摘されています。

信頼性が高いWordPress公式ディレクトリにあるプラグインやテーマを、常に最新の状態で使用する事が求められています。

テーマに関しては、アップデート後にカスタマイズ内容的が消えてしまう事を防ぐ為に、WordPressでは子テーマでの運営が推奨されています。

しかし、子テーマでの運営にはセキュリティ上のリスクが潜んでいます。

しかもこのリスクに関して、何故かネットではほとんど語られていません。
それどころか、セキュリィ面からも子テーマの作成が推奨されている事が多いです。

では、どこにリスクが潜んでいるのか・・・

カスタマイズを加えたテンプレートファイルです。

Header.phpとsingle.phpにカスタマイズを加えた場合のファイル構成です

子テーマでの運営では
親テーマ(上の例ではpoint)のfunctions.phpの前に読込まれ、CSSの読込み順を制御するfunction.phpと、
親テーマのカスタマイズ内容のみを既述したstyle.cssを、小テーマのフォルダ(上の例ではpoint-child)に作成して運用します。
(注)親テーマが 1つの style.css ファイルを使用してすべての CSS を保持している場合の例です)

そしてカスタマイズを加えたいテンプレートファイルがあれば(上の例では、header.phpsingle.php)、親テーマから子テーマにコピーした上で、子テーマのテンプレートにカスタマイズを加えます。

WordPressは、子テーマフォルダにあるfunction.phpstyle.cssを、親テーマのそれぞれの内容に追加します。
(親テーマの記述内容を上書きしない

一方それ以外は、子テーマフォルダにあるテンプレート(上の例では、header.phpsingle.php)を読み込みます。
(親テーマの記述内容を上書きする

従って親テーマがアップデートされても、子テーマのカスタマイズを加えたテンプレートは影響を受けないという仕組みです。

しかしこれは、小テーマの、カスタマイズをしたテンプレートファイル(上の例では、header.phpsingle.php)がアップデートされない事を意味します。

テーマアップテート後の状態

テーマのアップデート時には、オリジナルCSSだけでなくテンプレートファイルもアップテートされる事があります。
テンプレートファイルのアップデートには、セキュリティ上のアップデートも含まれているはずです。

もしカスタマイズしたテンプレートに脆弱性があった場合、小テーマでの運用では脆弱性が残ったままになるのです。

先に述べた通り、WordPressのカスタマイズでは、セキュリィ面からも子テーマの作成が推奨されています。
しかしその根拠は、「テーマのアップデート時にカスタマイズした部分が影響を受けないゆえに、テーマのアップデートが容易」という理由からです。

セキュリィ面からすると、テンプレートファイルのアップデートも全て子テーマのテンプレートファイルにも反映すべきなのですが、この視点は何故かほとんどスルーされいます。
そもそも、小テーマにコピーしたテンプレートファイルにもアップテート内容を反映しなければならないのなら、小テーマを作るメリットはないからてしょうか。

では、小テーマを作らずにテーマのアッブデートを行う為に、僕は如何にしてテーマのカスタマイズを行ったのか…

次のエントリーで詳しく説明致したいと思います。

モバイルバージョンを終了