WordPress環境においてプラグインは結構、不具合の原因になることがあります。
僕もWordPressテーマフォーラムで質問を受けていても、結構な割合で原因はプラグインだったりします。
その時に、すべての使用プラグインを書き出してもらったり、したこともありました。
けれどそれだと、書き出す方も面倒だと思います。
そんな時、「テーマ側に使用プラグイン全てを書き出してコピペできる機能があれば」と思ったので、プラグインをリストアップする方法を調べてみました。
目次
使用中のプラグインをリストアップ
以下は、Wordpressで有効化されているプラグインをリストアップするカスタマイズ方法です。
以下のコードをリストアップしたい場所に埋め込んで利用します。
<textarea cols="16" rows="10"> <?php $all = ''; //plugin.phpを読み込む include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); $plugins = get_plugins(); if (!empty($plugins)) { $all .= '有効化済みのプラグイン:'.PHP_EOL; foreach ($plugins as $path => $plugin) { if (is_plugin_active( $path )) { $all .= $plugin['Name']; $all .= ' '.$plugin['Version'].PHP_EOL; } } echo $all; } ?> </textarea>
埋め込む場所は、管理画面とかに専用の出力エリアを設けると良いのでしょうけど、通常のテンプレートファイルに埋め込んでも動作します。
実行結果はこんな感じになります。
簡単に動作を説明
簡単に動作を説明すると、まずはget_plugins()関数でインストールされている全てのプラグイン配列を入手します。
すると、以下のように「全てのインストールプラグイン情報」が入った配列が返されます。
array (size=44) 'addquicktag/addquicktag.php' => array (size=11) 'Name' => string 'AddQuicktag' (length=11) 'PluginURI' => string 'http://bueltge.de/wp-addquicktags-de-plugin/120/' (length=48) 'Version' => string '2.5.2' (length=5) 'Description' => string 'Allows you to easily add custom Quicktags to the html- and visual-editor.' (length=73) 'Author' => string 'Frank Bültge' (length=13) 'AuthorURI' => string 'https://bueltge.de' (length=18) 'TextDomain' => string 'addquicktag' (length=11) 'DomainPath' => string '/languages' (length=10) 'Network' => boolean false 'Title' => string 'AddQuicktag' (length=11) 'AuthorName' => string 'Frank Bültge' (length=13) 'akismet/akismet.php' => array (size=11) 'Name' => string 'Akismet Anti-Spam' (length=17) 'PluginURI' => string 'https://akismet.com/' (length=20) 'Version' => string '4.0.3' (length=5) 'Description' => string 'Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. It keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key.' (length=279) 'Author' => string 'Automattic' (length=10) 'AuthorURI' => string 'https://automattic.com/wordpress-plugins/' (length=41) 'TextDomain' => string 'akismet' (length=7) 'DomainPath' => string '' (length=0) 'Network' => boolean false 'Title' => string 'Akismet Anti-Spam' (length=17) 'AuthorName' => string 'Automattic' (length=10)
これらの配列情報のキー値からプラグインへのパス(例:addquicktag/addquicktag.php)を取得してis_plugin_active()関数で有効化されているか判別したものをリストアップしています。
インストールされているプラグインをリストアップ
有効化されているとかは関係なく、単にインストールされているプラグインをリストアップするのであれば、こんな感じになります。
<textarea cols="16" rows="10"> <?php $all = ''; //plugin.phpを読み込む include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); $plugins = get_plugins(); if (!empty($plugins)) { $all .= 'インストールされているプラグイン:'.PHP_EOL; foreach ($plugins as $path => $plugin) { $all .= $plugin['Name']; $all .= ' '.$plugin['Version'].PHP_EOL; } echo $all; } ?> </textarea>
こちらは、wp-content/pluginsフォルダ内にある全てのプラグインがリストアップされます。
実行結果はこんな感じ。
まとめ
こんな感じで、思ったより手軽にプラグイン情報を入手することが可能です。
例えば、Wordpressプラグイン作者等に、競合問題かもしれない不具合を報告するとき、こういった情報を添えると、解決が早くなるかもしれません。