🔌WordPressカスタマイズをfunctions.phpに書くのではなく、プラグインに落とし込む

ちょっとした思いつきを実現するために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環境でファイルアップロードによるプラグイン適応を行えば終了です。

お疲れ様でした。

投稿者: soramugi

ラジオ好きが講じてお仕事に選んだ人。 webエンジニアなので「ラジオで寂しさを無くすシステム制作」をしています(ラジオ=音声コンテンツ)。 東京は立川によく出没します。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中