Webサイト専門プログラマの言いたい放題

元システムエンジニアがサイト制作とプログラミングについて好き放題しゃべります。

【ワードプレスを更新したらカスタマイズが消えちゃった!子テーマの話】

f:id:wp-lesson:20160714111636j:plain

ワードプレスをカスタマイズしたことがある方が一度は経験するであろう通過儀礼
それが「テーマをアップデートしたらカスタマイズが消えちゃった騒動」である。

ワードプレスの管理画面(ダッシュボード)を開くと、結構な頻度で通知がくる。
「新しいバージョンが出たのでアップデートしましょうね」
という更新通知である。

ワードプレスの更新通知
f:id:wp-lesson:20160714115458j:plain

テーマ更新の注意書きは何を意味しているのか?

更新の対象は「ワードプレスのシステム本体」「テーマ」「プラグイン」などがある。
これらのうち、私たちユーザーが変更(=カスタマイズ)を行う可能性があるのは「テーマ」である。

ワードプレス開発側もそのことを知っているので、テーマの更新欄には注意書きがある。

▼テーマの更新に関する注意書き
f:id:wp-lesson:20160714115428j:plain

注: テーマに加えたカスタマイズがすべて失われます。テーマを修正する場合、子テーマの利用を検討してください。

『テーマに加えたカスタマイズがすべて失われます。』
なんですって!?

脅しではなく、本当にカスタマイズした内容がすべて、カスタマイズする前の状態に戻ってしまうのである。

これは、ワードプレスのフォルダ構成とテーマの更新の裏で何が行われているのかを知ることで理解できるのだ。

テーマの更新とはこういう意味

下記の図を見てほしい。

ワードプレスディレクトリ構造
f:id:wp-lesson:20160714131707p:plain

ワードプレスをインストールしたディレクトリには、大きく3つのディレクトリが作成される。

  • wp-admin ・・・ ダッシュボードのシステムが格納される場所
  • wp-content ・・・ テーマやプラグインなどが格納される場所
  • wp-includes ・・・ システム共通のプログラム群が格納される場所

テーマはこのうち、wp-contentディレクトリの中にあるthemesディレクトリの直下にテーマごとのディレクトリが作られ、そこにインストールされるのだ。

上の図は「freak」というテーマがどこにインストールされているかを示している。

さて、テーマの更新ボタンを押すと何が起こるかというと、

  1. テーマ「freak」の最新版ZIPファイルが公式サイトから自動的にダウンロードされる
  2. ZIPが自動的に解凍され、現在の「freak」ディレクトリの中に上書きされる

想像いただけるだろうか?
たとえばスタイルシート「style.css」をカスタマイズしていた場合、新しいバージョンの「style.css」で上書きされてしまうというわけだ。

これが、『テーマに加えたカスタマイズがすべて失われます。』の意味なのだ。ワードプレスは、わざわざカスタマイズした内容が消えないようにうまいことやってくれはしないのだ。

子テーマとは?

テーマ更新の仕組みがわかったところで、もう一度注意書きの内容を見てみよう。

注: テーマに加えたカスタマイズがすべて失われます。テーマを修正する場合、子テーマの利用を検討してください。

子テーマって何だろう?

下記の図を見て欲しい。

▼親テーマと子テーマの関係
f:id:wp-lesson:20160714133639p:plain

親テーマとは、カスタマイズする前の“元の”テーマのことである。
ここでは「freak」というテーマをカスタマイズしているのだが、「freak」ディレクトリの中にあるテンプレートファイルには一切カスタマイズを加えていない。

その代わり、テンプレートファイルのうちカスタマイズしたいものだけを、親テーマ「freak」から子テーマ「freak-child」ディレクトリへコピーし、子テーマのテンプレートファイルにカスタマイズを加えるのである。

こうすると、ワードプレスは子テーマの中にあるテンプレートファイルを親テーマよりも優先して使用してくれるので、サイトを訪問するユーザーから見ると、親テーマを直接カスタマイズした場合と全く同じに見えるのである。

これが、子テーマにするとテーマを更新してもカスタマイズが消えない理由である。

もちろん、ただ単に子テーマ用(のつもりで)フォルダを作ってその中にテンプレートファイルをコピーしても、ワードプレスには親テーマと子テーマの関連付けが伝わらないので、所定の書き方をする必要があるのだが。

子テーマにしてもカスタマイズが消える場合がある

先ほども解説したが、子テーマの本質的な仕組みは次の通りである。

同じテンプレートファイル名が親テーマと子テーマの両方にある場合、ワードプレスは子テーマにあるファイルのほうを優先する。

テーマを更新しても、親テーマのテンプレートファイルが新しいバージョンに置き換わるだけなので、子テーマに置いてあるカスタマイズされたテンプレートファイルは影響を受けない。

しかし、裏を返せばこうも言えるのである。

テーマの更新によってテンプレート名が変わったり、ファイルの統廃合があった場合は、子テーマのテンプレートファイルとの関連付けがなくなってしまうので、カスタマイズ前の表示に戻ってしまうことがあるのだ。

消えたカスタマイズの内容を復元するには?

こればかりは論理的にどう考えても避けようがないので、更新後の親テーマからテンプレートファイルを再び子テーマへコピーして、カスタマイズの内容をもう一度書き込むことになる。

このとき必要なのは

  1. カスタマイズしたのはどのファイルか?
  2. カスタマイズしたのは何行目から何行目までか?

という情報である。

そのためには、ダッシュボードの「外観->テーマの編集」から直接テンプレートファイルを書き換えるのではなく、FTPソフトなどを使ってネット上にあるテンプレートファイルをいったんデスクトップなどへダウンロードして、カスタマイズしたファイルをPCに残しておくことが重要だ。

下記の図を見て欲しい。

FTPソフトでバックアップしながらカスタマイズする
f:id:wp-lesson:20160714140306p:plain

多くのFTPソフトは、左側がパソコン内、右側がサーバー内というように、ファイルをドラッグ&ドロップで直感的にアップロードしたりダウンロードできるようになっている。

こうしておけば、万が一カスタマイズした内容が消えてしまっても、パソコン内に残してあるテンプレートファイルをもう一度FTPソフトでアップロードすれば、復元することができるだろう。

知っているようで知らないワードプレスの基本

ワードプレスを“売り”にしている制作会社やアフィリエイトサイト、ネット広告では、とにかくワードプレスのメリットだけをこれでもかと言わんばかりにアピールする。

たとえばこうだ。

  • プログラミングの知識ゼロでもできる!
  • たった30分でインストールできる!
  • SEOに強い!

この記事を読んでいるということは、あなたも少なからずワードプレスに興味があるか、すでにワードプレスを使っておられるのではないかと思う。一度はこのようなセールスコピーを見たことがあるだろう。

しかし、これは50%真実で50%がウソなのだということを私はあなたに伝えなければならない。

ちゃんと理由がある。

確かにワードプレスは非常に強力なツールだ。HTMLを知らなくてもメニューやウィジェットの付け替えができるし、テーマやプラグインをインストールして切り替えるだけで、サイトの見た目や機能を補強することができる。

このような便利すぎるツールは、本当はとても複雑で高度なシステムで動いているということを忘れてはならない。そして、私たちユーザーが複雑さや難しさを感じないのは、“難しいことが巧妙に隠蔽されているから”なのだと。

もともとテーマに備わっていない仕組みを追加したり配置を変えたりしようと思うと、“隠蔽された中の仕組み”にメスを入れなくてはならない。もし、ワードプレスの仕組みを知らなければ、やってはいけないことをやってしまうかも知れないのだ。

単なる趣味ではなくビジネス用途でワードプレスをカスタマイズしたり、これから制作実務でワードプレスを扱っていこうという方は、ネット広告がアピールしているほどワードプレスは簡単で底の浅いツールではないということを理解しておいたほうがよいだろう。

便利さの裏には必ず複雑な仕組みがあり、私たちはそれらを知らなくて済むように隠蔽された情報を与えられているに過ぎないのだ。そう、私たちは知っているようで知らないことが多いのだ。

5時間の個人レッスンでワードプレスの基本を学ぶ

たった5時間ではワードプレスの基本は身に付かない。繰り返しになるが、ワードプレスはそんなに底が浅いツールではないからだ。しかし、5時間で「独学では身に付きにくいワードプレスの基本概念」をあなたの脳にインストールさせていただくことはできる。

WordPress・ホームページ・プログラミングの家庭教師CODEMY
codemy-lesson.office-ing.net

今まで数十名の方がCODEMYでワードプレスの基本を学び、ビジネス運用をされているので、興味のある方は気軽に問い合わせフォームから相談をして欲しい。

hippy-office-ing.ssl-lolipop.jp