仅在特定的管理用户界面页面上加载js/css文件

时间:2012-01-24 作者:Laxmidi

我如何适应这个solution 使用我的插件?(请参见链接)。

我将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\');
我试着把这个放在主题的功能中。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仍在加载。在这种情况下,我如何调整解决方案?

2 个回复
SO网友:kaiser

正确的挂钩

    // 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)
读取this article @wpdevel.

进一步阅读法典中关于三钩的内容

  • admin_menu
  • network_admin_menu
  • user_admin_menuadmin_enqueue_scripts 胡克,你也有一个论点$hook_suffix:

    add_action( \'admin_enqueue_scripts\', function( $hook )
    {
        var_dump( $hook );
    } );
    
    注册时管理页面挂钩a admin (sub)menu page, 您可以将结果(即页面挂钩)保存到变量中:

    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;
    } );
    

SO网友:dev
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\' );
结束

相关推荐