在其他插件的选项页面中添加自定义脚本

时间:2014-08-25 作者:Abhik

我试图把一个自定义内联JavaScript作为一个由插件创建的选项页面
页面URL如下所示wp-admin/admin.php?page=psbg.

这是我用来在头部输出脚本的代码。

function add_scripts() {
    $current_screen = get_current_screen();

    if ( $current_screen = \'admin.php?page=psbg\' ) {
        // My codes here
    }
}
add_action( \'admin_head\', \'add_scripts\' );
这行不通。但如果我更改$current_screen

if ( $current_screen = \'admin.php\' ) {
    // My codes here
}
它可以工作,但会将代码添加到每个页面的父页面admin.php.

我做错了什么?

2 个回复
SO网友:cybmeta

有几种方法可以仅将脚本添加到某些管理页面。在我看来,最好的选择是admin_enqueue_scripts 并使用$hook 参数:

add_action(\'admin_enqueue_scripts\', \'cyb_admin_scripts\');
function cyb_admin_scripts( $hook ) {

    //You may need adjustment here to match for page
    //If the URL of your page is admin.php?page=psbg, the hook
    // to check would be toplevel_page_psbg
    if( $hook == \'toplevel_page_my-page-slug\' ) {

        wp_register_script(\'my-script\', plugins_url() . \'/my-plugin/js/script.js\', array(\'jquery\'));
        wp_register_style(\'my-style\', plugins_url() . \'/my-plugin/css/style.css\');
        wp_enqueue_style(\'my-style\');
        wp_enqueue_script( \'my-script\');

    }

}
我经常看到的另一种常见方式是使用load-page action 将文件排队。例如:

//Adding the menu in admin area
add_action(\'admin_menu\', \'cyb_add_menu\');
function cyb_add_menu(){

    $hook_suffix = add_menu_page(__(\'Page title\'), __(\'Menu title\'), \'manage_options\', \'my-page-slug\', \'display_callback_fn\');
    // Call to cyb_settings_page_load() when our page is loaded
    add_action( \'load-\'. $hook_suffix, \'cyb_settings_page_load\' );  

}

function cyb_settings_page_load() {
    //Enqueue styles and scripts
    wp_enqueue_script(\'my-script\', plugins_url() . \'/my-plugin/js/script.js\', array(\'jquery\'));
    wp_enqueue_style(\'my-style\', plugins_url() . \'/my-plugin/css/style.css\');
}

function display_callback_fn() {
    //Build your page hiere
}

SO网友:Abhik

在一个简单的print_rget_current_screen(); 满足了我的需要。

这就是成功的原因。。

function add_scripts() {
    $current = get_current_screen();

    if ( $screen->parent_base == \'psbg\' ) {
        // My codes here
    }
}
add_action( \'admin_head\', \'add_scripts\' );

结束

相关推荐

Admin tabs for custom plugin

所以我是WordPress插件开发新手,但我会尽可能快地学习。基本上,我尝试为我的自定义插件创建一个选项卡式导航。你问我到目前为止做了什么?在左侧导航栏中显示菜单的一个功能 function mb_menu_page() { add_menu_page(\'Big Name\', \'Big Name\', \'edit_posts\', \'bigname\', \'mb_big_name\', false, 1); add_submenu_page(\'bigname\