WordPressの管理画面で、特定のプラグインが有効になっている場合のみ、スクリプトを読み込む方法を解説します。これにより、不要なスクリプトの読み込みを防ぎ、管理画面の動作を軽くすることができます。
例えば、「Contact Form 7」や「WooCommerce」などのプラグインが有効時のみスクリプトを適用する場合に役立ちます。
目次
解説
管理画面で特定のプラグインが有効かどうかを判定し、その場合にのみスクリプトを読み込む方法です。is_plugin_active()
関数を使用すると、特定のプラグインが有効かどうかを簡単にチェックできます。
以下のコードは、Contact Form 7 が有効になっているかを判定し、メッセージを出力する例です。
function custom_admin_enqueue_scripts() {
// 特定のプラグイン (例: Contact Form 7) が有効かチェック
if ( is_plugin_active('contact-form-7/wp-contact-form-7.php') ) {
wp_enqueue_script(
'custom-admin-script',
get_template_directory_uri() . '/js/custom-admin.js',
array('jquery'),
false,
true
);
}
}
add_action('admin_enqueue_scripts', 'custom_admin_enqueue_scripts');
// プラグインが有効かどうかを判定する関数を利用するためにファイルを読み込む
if ( ! function_exists('is_plugin_active') ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
is_plugin_active('contact-form-7/wp-contact-form-7.php')
を使い、「Contact Form 7」が有効かどうかをチェック。- 有効な場合のみ
wp_enqueue_script()
を使用してスクリプト (custom-admin.js
) を管理画面に追加。 is_plugin_active()
を使用するために、wp-admin/includes/plugin.php
を読み込む(このファイルが未読み込みの場合に備える)。
function my_plugin_admin_scripts($hook) {
if (!is_plugin_active('contact-form-7/wp-contact-form-7.php')) {
return;
}
if ($hook == 'edit.php') {
wp_enqueue_script('cf7-admin-script', plugin_dir_url(__FILE__) . 'cf7-admin.js', array(), '1.0', true);
}
}
add_action('admin_enqueue_scripts', 'my_plugin_admin_scripts');
is_plugin_active()
を使用し、プラグインが有効かどうかを判定。- プラグインが無効なら
return;
してスクリプトを読み込まない。 edit.php
(投稿一覧ページ)のみcf7-admin.js
を読み込む。
is_plugin_active()
を使用する場合、include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
を追加する必要がある。contact-form-7/wp-contact-form-7.php
のパスは、プラグインディレクトリのplugin_basename()
で確認できる。
難易度(★★★☆☆ – 中級者向け)
- 基本的なPHP の知識が必要。
- WordPressのフック(
admin_enqueue_scripts
) を理解している必要がある。 - プラグインのパス を把握していないと正しく判定できないため、事前に確認が必要。
is_plugin_active()
の仕様を理解していないとエラーが発生する可能性がある。
ポイント
- 特定のプラグインが有効な場合のみスクリプトを読み込むことで、不要なスクリプトのロードを回避
is_plugin_active()
を使う場合、wp-admin/includes/plugin.php
を読み込む必要があることに注意- プラグインのパスを確認する(正しいパスでないと動作しない)
Q&A
まとめ
is_plugin_active()
を使うと、特定のプラグインが有効な場合のみスクリプトを読み込める。wp-admin/includes/plugin.php
の読み込みが必要になることに注意。get_current_screen()
を組み合わせると、特定の管理画面ページのみで適用できる。class_exists()
を使う方法もあり、プラグインによっては有効なチェック方法となる。
コメント