今回、とある理由でFTP無しでWordPressを構築することになったので、そのときに気をつけたことをまとめました。
なぜこのような環境で作る事になったのか
お打ち合わせで「お客様が持っているサーバーで構築したい」というお話になりましたが、IP制限でFTPにアクセスすることが難しく、保守などの兼ね合いで「テーマファイルのみ」の納品になりました。
そのため、Wordpressの土台の構築は先方にお願いして、実装は管理画面から出来る範囲で行うことになりました。
今回構築した特殊環境
- FTPは与えられていないが、「Theme File Manager」プラグインにより管理画面からテーマファイルにアップロードやダウンロードができる
- もし導入したいプラグインがあった場合は、お客様に許可を得るに必要がある。
- もし何かしらで見れなくなった場合は、お客様にご連絡する必要がある
もちろん、作業フローとしては検証環境で事前に表示を確認し、最後に本番サーバーにアップをします。
functions.phpはなるべく利用しない
今回、一番と言っていいほど大事なことは、functions.phpをなるべく利用しないことです。
functions.phpの記述をミスると管理画面にアクセスができなくなるので、FTPがないと復旧が難しくなります。
今回制作したのは会員限定サイトでしたが、ログインした後に管理画面にリダイレクトされる仕様をトップページに変更する仕様はどうしてもfunctions.phpを記述する必要がありました。それ以外はテンプレートファイル内で実行できる範囲で収めました。
コーディングするファイル量をなるべく減らす
通常でしたらファイルの共通箇所をなるべくまとめようとloopファイルなどを準備するのですが、今回は下手に記述してサイトにアクセスできなくなる可能性があることから、記述が必要なファイルを極力減らしました。
今回実装は以下のテンプレートファイルのみで実装しました。
- style.css
- header.php
- footer.php
- screenshot.png
- index.php
- functions.php
- 画像ファイル
アイコンやロゴなどを入れる必要があったため - front-page.php
トップページは他のページと区別する必要があったため - archive.php
記事一覧ページは個別ページと区別させたかったので。
おそらくここらへんは実装するデザインにも関わってくるところかと思いますが、今回はデザインの指定無しということから、こちらで勝手にファイルをまとめる構成にしました。
プラグインを最低限のものを利用する
サイトが落ちて管理画面にアクセスできなくなる可能性がある要因の一つとして、プラグインの誤作動によるサーバー落ちもあり得ます。
ですので今回は、プラグインなるべく利用せずに実装しました。
Advance Custom Fields を駆使する
functions.phpも記述せずにどうやって実装するの?と思われると思われると思いますが、今回の場合、Advance Custom Fields ( ACF ) を駆使しして実装しました。
今回設定したのは
- メニュー内容のカスタマイズ
- (今回会員サイトでしたので)ログイン前の記事の表示は可能にするかどうかを記事ごとに設定
- TOPページの文章をログイン前とログイン後で変更内容を変更する
を管理画面で編集できるようにした内容で、テンプレートファイルと管理画面内のACFの設定でカスタマイズ出来ます。
ここでポイントなのが、TOPページや共通パーツの設定は専用の固定ページを用意することです。
ここで気になるのは利用出来ないページが作られる事によるSEOやアナリティクスへの影響ですが、記事IDで設定すれば非公開でも実装可能です。
ACFは以下の記述で表示が可能です。
get_post_meta(記事ID, 'フィールド名', true)
//$post->IDの記述で現在の記事IDが設定されます
感想
なんとか出来たけど、復旧が出来ない(めんどくさい)という点から、すごくドキドキしながら構築しました。
やっぱり特別な事情がない限り、FTPを利用しながら構築したほうがいいね。