web-dev-qa-db-ja.com

特定の管理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はまだロードされています。この場合、どうやって解決策を適応させるのですか?

6
Laxmidi

右フック

    // 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_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;
} );
14
kaiser
function load_custom_wp_admin_style($hook) {
        // $hook is string value given add_menu_page function.
        if($hook != 'toplevel_page_mypluginname') {
                return;
        }
        wp_enqueue_style( 'custom_wp_admin_css', plugins_url('admin-style.css', __FILE__) );
}
add_action( 'admin_enqueue_scripts', 'load_custom_wp_admin_style' );
2
Super Model