ちょっとした思いつきを実現するためにWordPressを基盤にプログラムを書く事はたまにやります。ブログ機能にちょっとした機能を追加して試作してみたりですね。
先日も超個人的なブックマークサイトが欲しいなと、自作するまでも無いがシュッと作れないかと検索して出てきたこちらの記事に書かれている設定を行ったばかりです。
【WP】WordPressのPress This機能を応用して超個人的なブックマークサイトを作った話
実際に設定したサイトはこちら。以前こちらの記事でも書いた「タチカワサイド」という個人ニュースサイトです。週一更新をしていましたがライフサイクルの変化のおかげで方針転換、ブックマークサイトとして生まれ変わりました。
今回の設定はWordPressの基本的な設定では実現できなく、プログラムの記述を行ってフォーマットの調整やサムネイル画像の挿入を行いました。
通常、WordPressにプログラム記述方式でのカスタマイズだとテーマファイルのfunctions.phpを編集する必要があります。ですが、テーマ更新を行うとその編集が巻き戻ってしまうためあまりお勧めできません。
そこで今回は「WordPressでのプログラム変更によるカスタマイズ」をプラグイン形式で記述することによってテーマ更新を行える環境にする手順を公開していきます。
少ない手数で実現できる成果を、少ない手数で変更出来る環境を用意しておけば楽できるんじゃ無いかなという思いの人向けです。つまり私のような人。
手順
まずはDockerを使ってWordPress環境を作ります
$ mkdir sample-wp
$ cd sample-wp
公式のdocker-composeを少し編集
# docker-compose.yml
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- ./wordpress:/var/www/html
networks:
- wpnet
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- ./db:/var/lib/mysql
networks:
- wpnet
cli:
image: wordpress:cli
volumes:
- ./wordpress:/var/www/html
networks:
- wpnet
networks:
wpnet:
上記のファイルを作成、docker-compose up
すればカレントディレクトリ配下にwordpressがインストール、 http://localhost:8080 にアクセスすればWordPressのセットアップ画面が表示されます

コマンドラインからWordPressを操作やプラグイン作成もできる WP-CLI も使えるようにしているので、以下のコマンド実行でプラグインの雛形が作られます
# 本来はこちらのコマンドで作られる
$ wp scaffold plugin <プラグイン名>
# 今回の docker での実行はこちら
$ docker-compose run cli scaffold plugin <プラグイン名>
プラグインの雛形が作成される場所はこちら(test-pluginとして作成)
sample-wp $ ll wordpress/wp-content/plugins/test-plugin/
total 44K
-rw-r--r-- 1 mugi staff 576 4 4 12:02 .distignore
-rw-r--r-- 1 mugi staff 448 4 4 12:02 .editorconfig
-rw-r--r-- 1 mugi staff 94 4 4 12:02 .gitignore
-rw-r--r-- 1 mugi staff 2.2K 4 4 12:02 .phpcs.xml.dist
-rw-r--r-- 1 mugi staff 1.4K 4 4 12:02 .travis.yml
-rw-r--r-- 1 mugi staff 1.2K 4 4 12:02 Gruntfile.js
drwxr-xr-x 3 mugi staff 96 4 4 12:02 bin/
-rw-r--r-- 1 mugi staff 343 4 4 12:02 package.json
-rw-r--r-- 1 mugi staff 389 4 4 12:02 phpunit.xml.dist
-rw-r--r-- 1 mugi staff 4.3K 4 4 12:02 readme.txt
-rw-r--r-- 1 mugi staff 348 4 4 12:02 test-plugin.php
drwxr-xr-x 4 mugi staff 128 4 4 12:02 tests/
sample-wp $
test-pluginとして作成したプラグインは test-plugin.php
ファイルを編集すればfunctions.phpと同じように適応されます。
あとは作成したプラグインを http://localhost:8080 でアクセスしたWordPressでプラグインを適応したり確認したりして動作するようになったらzipで圧縮、作成できたzipファイルを本来稼働する予定のWordPress環境でファイルアップロードによるプラグイン適応を行えば終了です。
お疲れ様でした。