この記事の目的
- AppEngine Standard Environment(SE)上でWordpressを動かす際のプラグイン管理方法の紹介
動作環境
- PHP 7.2.9
- Google Cloud SDK 220.0.0
- Wordpress 4.9.8
本題
AppEngine SEでWordPressを開発・デプロイのベース作成にはWordPress on App Engine Standard for PHP 7.2 を使いました。
本題のプラグイン管理についてですが、AppEngineはapp.yamlという設定ファイルがあるディレクトリをルートディレクトリとして、それ以下にあるファイルを全てまとめてAppEngine上にデプロイします。
そのファイル群+オプションでいくつかのPHP Extensionsによってアプリケーションを構成するため、デプロイ時にはデプロイを実行する環境にWordPressのコアファイル及びプラグインを含めたファイルが全て存在する必要があります。
プラグインを全てリポジトリに含めることも出来なくはないですが、サイズとメンテナンス性の観点から取りたくない方法なので、どのプラグインのどのバージョンを利用しているのかのみを管理します。
プラグインをコード管理したい場合にWP-CLI
を使ってインストールとアクティベートを自動化する方法もありますが、AppEngine SEではローカルファイルの書き込みができないため、この方法はとれません。
なので、今回はcomposerを使って、開発/デプロイ時にプラグインをインストールする方法をとります(プラグインのアクティベートはデプロイ後にWordpressの管理画面から行います)。
composerによるWordPressプラグインの管理
composerでWordPressのプラグインを管理するためにはWordPress Packagistを使います。
WordPress Packagistはプラグインをホスティングしているリポジトリで、これをcomposerのrepositoriesに追加することで管理を可能にします。
以下がcomposer.jsonのサンプルです。repositories
プロパティにhttps://wpackagist.org
を追加していて、require
プロパティで必要なプラグイン(例)を指定しています。
{
"name": "sample",
"authors": [
{
"name": "author",
"email": "[email protected]"
}
],
"repositories": [
{
"type": "composer",
"url": "https://wpackagist.org"
}
],
"minimum-stability": "dev",
"require": {
"wpackagist-plugin/addquicktag": "2.5.*",
"wpackagist-plugin/advanced-custom-fields": "5.7.*",
"wpackagist-plugin/all-in-one-seo-pack": "2.9.*",
"wpackagist-plugin/gcs": "0.1.4",
}
}
これらのプラグインはwp-content/plugins
ディレクトリにインストールされます。
vendor
ディレクトリにインストールされないのは、これらがtype:wordpress-plugin
を指定されているためで、composerはこのtypeのパッケージのインストール先をデフォルトでwp-content/plugins
に指定します。
これはその他のFW等でも適用されていることもあり、詳しい説明はこちらに書かれています。
インストール時のプラグインのパッケージ名称は
- WordPress Packagistから検索する
- WordPressプラグインの一覧から探す
などで探してみてください。