WordPressテーマにプラグインを同梱しよう![TGMPA]

WordPressのテーマをカスタマイズをしていると、他の人が作ったテーマって気になりますよね。
そこで色んなテーマを見ていると、テーマを適応させた時に「このテーマは次のプラグインが必要です」という表示が出てくるときがあります。

テーマを適応したタイミングでプラグインのインストールを誘導する方法。気になりませんか?
1度でもテーマを自分で作ったことがある人なら、非常に簡単に実装できてしまいます!
テーマ開発や自作テーマの横展開などに活用できるので便利ですよ!

TGM Plugin Activation を使う

まず、使うのはTGM Plugin Activationです。
テキストドメインにも対応しているので、言語ファイルを用意することで、日本語の表示もできます!

ちなみに TGM Plugin Activation は、WordPressのプラグインではありません。PHPのライブラリです。

TGM Plugin Activation の導入方法

公式サイトから TMG Plugin Activation をダウンロードします(2016/05/26 現在では v2.6.1が最新でした)

tgmpa_01
http://tgmpluginactivation.com/

ダウンロードしたフォルダから、class-tgm-plugin-activation.php をテーマのフォルダにコピー。
ダウンロードしたフォルダの中にある example.php のコードを functions.php にコピー。
必要な項目を変更したり、追加したり。
より詳細な説明は、公式サイト(英語)にも書いていますが、大体はこんな感じです。

そしてメインになるのは example.php のコードです。
簡単に説明すると以下のようになります。

[php] require_once dirname( __FILE__ ) . ‘/class-tgm-plugin-activation.php’;
add_action( ‘tgmpa_register’, ‘my_theme_register_required_plugins’ );
function my_theme_register_required_plugins(){
$plugins = array(
// 導入したいプラグインの数だけ増えます
array(
‘name’ => ‘TGM Example Plugin’, // プラグイン名
‘slug’ => ‘tgm-example-plugin’, // プラグインのフォルダ名
‘source’ => get_template_directory_uri() . ‘/lib/plugins/tgm-example-plugin.zip’, // インストールするプラグインの場所
‘required’ => true, // true:必須、false:推奨
‘version’ => ”, // 動作可能なプラグインの最低バージョンを決めることができる。空だと決めない。
‘force_activation’ => false, // true:テーマが有効な時にプラグインが強制的に有効化。テーマを変更する以外ではプラグインを停止できない。
‘force_deactivation’ => false, // true:テーマが変更された場合にプラグインを強制的に停止。
),
);
$config = array(
// 基本、何も変更しなくでもOKです
‘default_path’ => ”, // 同梱プラグインのフォルダへの絶対パス
‘menu’ => ‘tgmpa-install-plugins’, // ダッシュボード内での、必須・推奨プラグインインストール用のページスラッグ
‘has_notices’ => true, // true:プラグインの導入を誘導する文言を表示
‘dismissable’ => true, // true:上記、has_notices の表示を無視する選択肢を表示
‘dismiss_msg’ => ”, // 上記、dismissable を true とした場合に表示させるメッセージ
‘is_automatic’ => false, // true:プラグインをインストール後に自動的に有効化
‘message’ => ”, // プラグインのインストールページで表示する文言
);
tgmpa($plugins, $config);
}
[/php]

まとめ

TGM Plugin Activation は、最初から使うプラグインが決まっているテーマを作りたい時は、非常に便利なライブラリです!
お仕事でWordPressを活用している方は「効率化」にも繋がるんではないでしょうか?