【WordPress】WPMLをcomposerで管理する
案件でWPMLを使う機会があり、ローカル環境での使用を目的にComposerを使って色々と作業しました。その試行錯誤の結果を備忘録として残しておきます。
経緯
いつもローカル環境は以前zennの本にまとめたとおり、@wordpress/env
の環境を使っています。
プラグインは.wp-env.json
内のplugins
で管理でき、zipファイルの指定も可能ですが、WPMLはURLにuser_id
やsubscription_key
があるので、安易にGitHubに置いておくのははばかられます。
かと言って、ローカルにzipファイルを配置して各々ダウンロードしてね、も共同開発の面で好ましくありません。(ダウンロードしてくるのも面倒ですし)
そこで、Composerでプラグインを管理することにしました。
元々.wp-env.jsonで管理していたプラグインは?
こちらもComposerに移動します。
あっちこっちのファイルで管理するよりも、一元管理したほうがわかりやすいですしね。
ComposerでWordPressのプラグインを管理するには、WordPress Packagistを使います。
該当の箇所だけ挙げてみるなら、このように書きます。
{
"name": "hamworks/hamworks",
"description": "",
"license": "GPL-2.0-or-later",
"repositories": [
{
"type": "composer",
"url": "https://wpackagist.org"
}
],
"require-dev": {
"wpackagist-plugin/wordpress-importer": "dev-trunk",
"wpackagist-plugin/safe-svg": "dev-trunk",
"wpackagist-plugin/wordpress-seo": "dev-trunk"
},
"extra": {
"installer-paths": {
"./wp-content/mu-plugins/{$name}": [
"type:wordpress-muplugin"
],
"./wp-content/plugins/{$name}": [
"type:wordpress-plugin"
],
"./wp-content/themes/{$name}": [
"type:wordpress-theme"
]
}
},
...
}
肝心のWPMLの管理
private-composer-installerを使う(採用した方法)
WPMLのようなプライベートパッケージのURLを参照できるライブラリです。
このライブラリは .env
を他のライブラリを追加せずに使えるのが大きな利点です。(後述のダメだった方法でめちゃくちゃキレながらやってたので、特別なにかしなくても.env
が使えるのは素晴らしい👏)
READMEでサンプルがあげられているように、WPMLだけではなくACF Proなどの有償プラグインもこれを使えばプラグイン管理できます。
まずはライブラリを追加します。
composer require composer/installers
composer require ffraenz/private-composer-installer
composer.jsonのrepositories
に、WPMLのパッケージの情報を記述します。
{
"name": "hamworks/hamworks",
"description": "",
"license": "GPL-2.0-or-later",
"repositories": [
{
"type": "package",
"package": {
"name": "wpml/wpml-multilingual-cms",
"version": "3.1.3",
"type": "wordpress-plugin",
"dist": {
"type": "zip",
"url": "https://wpml.org/?download=10420399&user_id={%WPML_USER_ID}&subscription_key={%WPML_SUBSCRIPTION_KEY}&t=1720742383&version=3.1.3"
},
"require": {
"ffraenz/private-composer-installer": "^5.0"
}
}
}
],
...
}
WPML_USER_ID
とWPML_SUBSCRIPTION_KEY
を環境変数にしているので、.env
ファイルを用意して、環境変数をおきます。なお、このファイルはGit管理しないので、.gitignore
に追加しておきましょう。
代わりに、.env.sample
をGit管理して、このファイルから.env
を作れるようにしておきます。
WPML_USER_ID=user_id
WPML_SUBSCRIPTION_KEY=subscription_key
ちなみに、dist
に書いているURLは以下のページのOTGS Installerのダウンロードマークのリンクが該当します。ログインしてダウンロードページから取得しましょう。
これで秒でWPMLがインストールできました。
参考にしたURL
ダメだった方法
半日かけてダメだった方法も残しておきます。書き方が悪かったとかそういうことではなく、単にライブラリが現行のWPMLのダウンロードリンクに合わないというオチでした。
また、こちらは環境変数を使うために、別途vlucas/phpdotenv
などの追加が必要です。(が、入れても.env
が認識されないからバチ切れしながらやってた)
ここでsubscription_key
が32文字であると固定されていて、現行のダウンロードリンクの文字数と合いません。最初にここを見ればよかったんですが、ずーっと.env
なり.zshrc
なりと格闘してました。
なんかうまくいかないなと思ったら(読めるか自信なくても)ちゃんとコード読むのが大事だなと思いました…😭
Discussion