WordPress 管理画面の特定ページでのみ JavaScript 読み込みする方法の解説です。(単純にフックすると、jsが全ページで読み込まれることになります。)WordPress 管理画面上で関数(クラス)のソースを閲覧できるプラグイン Source Viewでも活用しています。
Justin Tadlock さまの記事 How to load JavaScript in the WordPress admin をベースにしています。
Source View のソースコードです。(sv_
という prefix をつけています)
function sv_plugin_admin_page() { // Use of $hook is explained below // http://justintadlock.com/archives/2011/07/12/how-to-load-javascript-in-the-wordpress-admin // Thanks, Justin. $hook = add_options_page( 'Source View Options', __('Source View','source-view'), 'manage_options', 'source-view', 'sv_plugin_options' ); add_action('admin_print_scripts-'.$hook, 'sv_load_script',10); add_action('admin_footer-'.$hook, 'sv_load_script_footer',11); add_action('admin_print_styles-'.$hook, 'sv_load_style',10); } add_action( 'admin_menu', 'sv_plugin_admin_page' );
add_options_page
の返り値が、(管理画面に追加した)ページの hook_suffix
となる、ということを、上述の「How to load JavaScript in the WordPress admin」で知りました。これにより、わざわざ手作業で URL(hook_suffix
) を設定する手間が省けます。非常に助かりました。
admin_print_scripts-'.$hook
では、sv_load_script
を呼び出しています。sv_load_script
は下記のように定義しています。
function sv_load_script() { wp_register_script('syntaxhighlightershcore', plugins_url('/syntaxhighlighter/js/shCore.js', __FILE__)); wp_register_script('syntaxhighlighterphp', plugins_url('/syntaxhighlighter/js/shBrushPhp.js', __FILE__),array('syntaxhighlightershcore')); wp_enqueue_script('syntaxhighlighterphp'); }
syntaxhighlighter
の javascript を読み込んでいます。wp_register_script
でスクリプト依存関係も含めて定義しておき、wp_enqueue_script
で読み込みます。