WordPressのプラグインの作り方

2019.12.6 (金)

WordPressのプラグインはfunctions.phpの拡張というような機能になっています。ちょっとしたカスタマイズだったらfunctions.phpに書けば十分機能しますし、どんな設定も全体に反映できますし、部分的にどこに機能を注入するかもフックを使って指示できます。これはなかなか優れたフレームワークの機能で、こういった設計はわりと好きです。
プラグインの機能はこれらの機能の拡張なので、実際に作成する際に必要なことは、機能を割り当てた関数function()とそれらを反映させるアクションフックとフィルターフックということになります。functionはPHPの知識が多少あれば書けますが、フックについてはWordpress固有の仕様であり知識なので公式ドキュメントを熟読する必要があります。もう一つ大切なのはWordpress内部でやり取りされている引数です。Defineとしてすでに保持している値や特定の動作の際に特定の変数に挿入されプラグインの中で利用することのできる引数や返り値があります。その機能に応じて変数の中身を熟知シておく必要があります。

下準備としてはこれぐらいで後はそれほど難しいところはありません。

Quick Start

wp_loadedというアクションフックを使って簡単なプラグインを作ってみます。このフックはWordPressが完全に読み込まれた後に実行されるフックです。
Foobarsというどうでもいいプラグインを作成します。

wp-contents/plugins
└── Foobars
    └── index.php

プラグインをプラグインと認識させるためにはプラグインとしていのアノテーションみたいなものを使います。index.phpの先頭で、

<?php
/*
Plugin Name: Foobar
Plugin URI: https://saba.omnioo.com/note/
Description: プラグインの説明を書いておく
Author: omnioo
Version: 0.1
Author URI: https://saba.omnioo.com/note/
*/

を書きます。これでWordpressの管理画面からプラグインとして読み込まれます。意味のないファイルですが有効化することもできます。
これでPHPファイルをプラグインとして認識するところまでできました。
次にプラグインとしての関数を書きます。foobar()関数に適当にechoします。この「hello foo bar」が表示されるようにするためにwp_loaded というアクションフックを使います。このアクションフックはWordpressの読み込みが完了した直後に実行されます。通常は例えばRSSの読み込みなどの外部APIを読み込んで表示する(テンプレートの描画はこの後に行われます。)や、Wordpress以外の独自の初期化などが必要なときにはこのアクションフックが使えます。
完成したものはこんな感じになります。

<?php
/*
Plugin Name: Foobar
Plugin URI: https://saba.omnioo.com/note/
Description: プラグインの説明を書いておく
Author: omnioo
Version: 0.1
Author URI: https://saba.omnioo.com/note/
*/

function foobar() {
    echo 'hello foo bar';
}
add_action( 'wp_loaded', 'foobar' );

これで