钩子文档

wp_dashboard_setup

💡 云策文档标注

概述

wp_dashboard_setup 是一个 WordPress 动作钩子,在核心仪表板小工具注册后触发,主要用于自定义仪表板小工具的添加或移除。

关键要点

  • 钩子名称:wp_dashboard_setup,在 wp_dashboard_setup() 函数中定义,位于 wp-admin/includes/dashboard.php。
  • 主要用途:提供仪表板相关自定义选项,特别是通过 wp_add_dashboard_widget() 添加小工具或 remove_meta_box() 移除小工具。
  • 引入版本:WordPress 2.5.0。

代码示例

// 移除特定仪表板小工具示例
add_action('wp_dashboard_setup', 'remove_dashboard_widgets');

function remove_dashboard_widgets () {
    remove_meta_box( 'dashboard_quick_press',   'dashboard', 'side' );
    remove_meta_box( 'dashboard_recent_drafts', 'dashboard', 'side' );
    remove_meta_box( 'dashboard_primary',       'dashboard', 'side' );
    remove_meta_box( 'dashboard_secondary',     'dashboard', 'side' );
    remove_meta_box( 'dashboard_incoming_links','dashboard', 'normal' );
    remove_meta_box( 'dashboard_plugins',       'dashboard', 'normal' );
}
// 移除所有仪表板小工具示例
function remove_dashboard_widgets(){
    global $wp_meta_boxes;
    foreach( $wp_meta_boxes["dashboard"] as $position => $core ){
        foreach( $core["core"] as $widget_id => $widget_info ){
            remove_meta_box( $widget_id, 'dashboard', $position );
        }
    }
}
add_action( 'wp_dashboard_setup', 'remove_dashboard_widgets', 1000000 );

注意事项

  • 移除小工具时,需在钩子函数内调用 remove_meta_box(),并指定小工具 ID、上下文和位置。
  • 小工具也可以通过隐藏方式管理,但移除操作更彻底。
  • 添加小工具应使用 wp_add_dashboard_widget() 函数。

📄 原文内容

Fires after core widgets for the admin dashboard have been registered.

More Information

This hook grants access to Dashboard-related customization options. In particular, this hook is used for adding [wp_add_dashboard_widget()] or removing[remove_meta_box()] dashboard widgets from WordPress.

To add a dashboard widget, use wp_add_dashboard_widget()

To remove a dashboard widget, use remove_meta_box()

Source

do_action( 'wp_dashboard_setup' );

Changelog

Version Description
2.5.0 Introduced.

User Contributed Notes

  1. Skip to note 4 content

    To remove a dashboard widget, call remove_meta_box() within the hooked function.

    add_action('wp_dashboard_setup', 'remove_dashboard_widgets');
    
    function remove_dashboard_widgets () {
    
          //Completely remove various dashboard widgets (remember they can also be HIDDEN from admin)
          remove_meta_box( 'dashboard_quick_press',   'dashboard', 'side' );      //Quick Press widget
          remove_meta_box( 'dashboard_recent_drafts', 'dashboard', 'side' );      //Recent Drafts
          remove_meta_box( 'dashboard_primary',       'dashboard', 'side' );      //WordPress.com Blog
          remove_meta_box( 'dashboard_secondary',     'dashboard', 'side' );      //Other WordPress News
          remove_meta_box( 'dashboard_incoming_links','dashboard', 'normal' );    //Incoming Links
          remove_meta_box( 'dashboard_plugins',       'dashboard', 'normal' );    //Plugins
    
    }

  2. Skip to note 5 content

    To remove all Dashboard widgets:

    function remove_dashboard_widgets(){
        
        global $wp_meta_boxes;
        
        foreach( $wp_meta_boxes["dashboard"] as $position => $core ){
            
            foreach( $core["core"] as $widget_id => $widget_info ){
                
                remove_meta_box( $widget_id, 'dashboard', $position );
            }
        }
        
    }
    add_action( 'wp_dashboard_setup', 'remove_dashboard_widgets', 1000000 );

  3. Skip to note 6 content

    Example from Codex: To Remove a Dashboard Widget

    To remove a dashboard widget, call remove_meta_box() within the hooked function.

    add_action('wp_dashboard_setup', 'remove_dashboard_widgets');
    
    function remove_dashboard_widgets () {
    
          //Completely remove various dashboard widgets (remember they can also be HIDDEN from admin)
          remove_meta_box( 'dashboard_quick_press',   'dashboard', 'side' );      //Quick Press widget
          remove_meta_box( 'dashboard_recent_drafts', 'dashboard', 'side' );      //Recent Drafts
          remove_meta_box( 'dashboard_primary',       'dashboard', 'side' );      //WordPress.com Blog
          remove_meta_box( 'dashboard_secondary',     'dashboard', 'side' );      //Other WordPress News
          remove_meta_box( 'dashboard_incoming_links','dashboard', 'normal' );    //Incoming Links
          remove_meta_box( 'dashboard_plugins',       'dashboard', 'normal' );    //Plugins
    
    }