質問: 特定の管理uiページにのみjs/cssファイルをロードする どのように私はこの ソリューション を私のプラグインで動作するように適応させますか? (リンクを見てください)。次のようにしてcssスクリプトとjsスクリプトをエンキューします。function my_plugin_init() { wp_enqueue_script('my_plugin_script', plugins_url('js/the_filepath.js', __file__), array('jquery')); wp_enqueue_style( 'my_plugin_css', plugins_url( '/css/the_filepath.css', __file__ ) ); } add_action('init', 'my_plugin_init'); これをテーマのfunctions.phpに入れてみましたが、うまくいきませんでした。function remove_my_plugin_extras() { remove_action('init', 'my_plugin_init'); } if( !is_page('my_page') ) { add_action('wp_head', 'remove_my_plugin_extras'); } スクリプトとcssはまだロードされています。この場合、どうやって解決策を適応させるのですか?
回答: 右フック // use both for scripts & styles *) wp_enqueue_scripts // (for the frontend) login_enqueue_scripts // (for the login screen) admin_enqueue_scripts // (for the admin dashboard) *)を読んでください この記事@wpdevel 。3つのフックに関するコーデックスのさらなる読み方 admin_menu network_admin_menu user_admin_menu admin_enqueue_scriptsフックにも引数があります:$hook_suffix:add_action( 'admin_enqueue_scripts', function( $hook ) { var_dump( $hook ); } ); 管理ページフック 管理(サブ)メニューページ を登録する際には、ページフックである結果を変数に保存することができます。function register_admin_page() { // register (sub)menu page $hook_suffix = add_submenu_page( $your_args_array ); // add styles to hook add_action( "load-{$hook_suffix}", 'callback_function' ); } // use one of those hooks to register the page add_action( 'admin_menu', 'register_admin_page' ); add_action( 'user_admin_menu', 'register_admin_page' ); add_action( 'network_admin_menu', 'register_admin_page' ); // register your styles & scripts in here function callback_function() { // do stuff } チェック対象のグローバルに利用可能な変数の管理以下global $hook_suffix, $typenow, $pagenow, $self, $parent_file, $submenu_file 管理ページの広い範囲で利用可能です。要求されたページに必要なページがあるかどうかを確認し、そのときだけを実行するためにそれらを使用します。// example if ( 'edit.php' !== $globals['pagenow'] ) return; その場でリセットされる可能性がある変数に対するテストよりも優れています(例)。$globals['wp'] = array( 'lost', 'my', 'contents', ); ...管理ページで\wp_screenオブジェクトを使用しています:add_action( 'admin_enqueue_scripts', function( $hook ) { /** @var \wp_screen $screen */ $screen = get_current_screen(); var_dump( $screen ); if ( 'post.php' !== $screen->base ) return; } );