WordPressテーマへのプラグイン導入を促す TGM Plugin Activation

スポンサーリンク

WordPress.orgにWelcart用テーマを申請する過程で、色々と問題を指摘されたそもそも論として、「プラグインがないと動かないテーマは認められない」ということがありました。

チェックして下さった方とのテーマレビューのコメントのやり取りの中で、「特定のプラグイン用のテーマなら、これを使ってみたら」とアドバイス頂いたのがTGM Plugin Activationです。

TGM Plugin Activation

ライセンスはGPL2.0。テキストドメインにも対応されているので、自分で言語ファイルを用意すれば英語以外での表示も可能です。

TGM Plugin Activationとは

テーマ内に設置しておくと、WordPressのテーマを有効化した時に「このテーマは○○というプラグインのインストールを必須としています(or 推奨しています)」、またはインストールされても有効化されていなければ「以下の推奨プラグインは有効化されていません」と表示して、ユーザーにプラグインのインストールを促す表示を出してくれる、PHPライブラリ。

※ライブラリ=ユーザーは簡単な設定をするだけで複雑な処理が出来る、予め必要な処理をまとめたプログラム。当サイトで紹介しているjQueryのプラグインなどもその一種ですが、プログラマーじゃない私のようなぺーぺーには大変有難い存在。

インストールを促す文言はWordPressのダッシュボード上に表示されます。

※ここでは日本語化しています

※ここでは日本語化しています

標準では英語ですが、テキストドメインで書かれているので、表示の日本語化ももちろん可能です。

※テキストドメインについて詳しくは「自作WordPressテーマの国際化(翻訳)の方法」参照。

設定出来る内容は、例えば「プラグインのインストールを必須にするか推奨にするか」「プラグインはWordPress.orgに登録済みのものか、登録外のもの(URLを指定)か」「インストール後は自動で有効化するのかしないのか」等、かなり柔軟に対応可能となっています。

これら設定はfunctions.phpにコードを書く(見本があるのでコピペして書き換える)だけです。簡単ですね。

TGM Plugin Activationのテーマへの導入方法

  1. 公式サイトからTMG Plugin Activationをダウンロード
  2. ダウンロードフォルダから、class-tgm-plugin-activation.phpをテーマ内にコピー
  3. example.php(または公式サイト)から、functions.phpにコードをコピー&ペースト、必要項目を変更・追加、不要項目は削除。

公式サイト(英語)にも詳しく書いてあります。ここでは3の部分を日本語で解説したいと思います。

TGM Plugin Activationの設定(functions.php)

1. TGMPAの読み込み

最初の3つのコードで、class-tgm-plugin-activation.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以下になります。

2. プラグインの設定

例えば、プラグインをテーマに同梱する場合の例としては以下のコード例が書かれています。

array(
     'name'               => 'TGM Example Plugin', // The plugin name.
     'slug'               => 'tgm-example-plugin', // The plugin slug (typically the folder name).
     'source'             => get_stylesheet_directory() . '/lib/plugins/tgm-example-plugin.zip', // The plugin source.
     'required'           => true, // If false, the plugin is only 'recommended' instead of required.
     'version'            => '', // E.g. 1.0.0. If set, the active plugin must be this version or higher.
     'force_activation'   => false, // If true, plugin is activated upon theme activation and cannot be deactivated until theme switch.
     'force_deactivation' => false, // If true, plugin is deactivated upon theme switch, useful for theme-specific plugins.
     'external_url'       => '', // If set, overrides default API URL and points to an external URL.
),

TGMPA公式サイトにもあるように、基本的には以下の4つを変更することによりカスタマイズが出来ます。

name プラグイン名
slug プラグインフォルダ名
required trueで「必須」、falseで「推奨」
source WordPress公式プラグインディレクトリ以外からインストールする場合のプラグインの場所

加えて、以下のオプションが設定可能です。

version 動作可能なプラグインの最低バージョン
force_activation trueでテーマが有効な時はプラグインが強制的に有効化される。他テーマにすること以外ではプラグインを停止出来ない。
force_deactivation trueでテーマが他テーマに変更された場合に、プラグインを強制的に停止させる。
external_url プラグインの外部リンク。設定した場合はこちらが参照される。

公式サイトの例では、これ以外に「WordPress非公式のプラグインをインストールする場合」「WordPress公式ディレクトリからプラグインをダウンロードする場合」の例が続けて書かれていますので、参考にして下さい。

例えば私が作ったWelcart用のテーマであれば、WelcartプラグインはWordPressの公式プラグインディレクトリからインストール出来ますので、以下のようになります。

'name'      => 'Welcar e-Commerce', //プラグイン名
'slug'      => 'usc-e-shop', //プラグインフォルダ名
'required'  => false,//「推奨」表示

3. インストール時の動作・表示等の設定

$config = array以下では、インストール時に自動的に有効化させるかどうかや、画面に表示させる文言を設定出来ます。

default_path 同梱プラグインフォルダへの絶対パス
menu ダッシュボード内での、必須・推奨プラグインインストール用のページスラッグ。
has_notices trueで「このテーマは以下のプラグインを必須(推奨)にしています」を表示
dismissable trueで「このテーマは以下のプラグインを・・・」表示をユーザーが無視する選択肢を出せる
dismiss_msg dismissableをtrueとした場合に表示させるメッセージ
is_automatic trueでプラグインインストール後に自動的に有効化される
message プラグインのインストールページで、プラグイン表の直前に表示する文言
strings array内の設定で、インストール中や完了時等の文言を設定

文言は全てテキストドメインになっているので、言語ファイルを用意すれば日本語化も大丈夫です。

まとめ

TGM Plugin ActivationはWelcartに限らず、自分以外の人の使用が想定されるテーマを「プラグインありき」で制作している場合は非常に役立つライブラリです。

例えばWeb屋さんであれば、テーマを納品する際にクライアントがプラグインをインストール・有効化する手間を省くことが出来ます。

今回私がWordPress.orgに申請したWelcart用テーマでは、最終的には「Welcartなしでも動くテーマ」に作り変えたため、設定は「推奨」にしました。

このライブラリを取り入れているテーマもいくつかWordPress公式テーマディレクトリにあるので、使い方については色々参照してみて下さい。

コメントは受け付けていません。

Copyright© 2017 Welcart カスタマイズ ブログ All Rights Reserved.