wp_dashboard_setup

Definition:
function wp_dashboard_setup() {}

Registers dashboard widgets.
Handles POST data, sets up filters.

Defined filters

  • dashboard_incoming_links_link
    apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home')
  • dashboard_incoming_links_feed
    apply_filters( 'dashboard_incoming_links_feed', $widget_options['dashboard_incoming_links']['url'] )
  • dashboard_incoming_links_feed
    apply_filters( 'dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?scoring=d&ie=utf-8&num=' . $num_items . '&output=rss&partner=wordpress&q=link:' . trailingslashit( get_option('home')
  • dashboard_primary_link
    apply_filters( 'dashboard_primary_link', __( 'http://wordpress.org/news/' )
  • dashboard_primary_feed
    apply_filters( 'dashboard_primary_feed', __( 'http://wordpress.org/news/feed/' )
  • dashboard_primary_title
    apply_filters( 'dashboard_primary_title', __( 'WordPress Blog' )
  • dashboard_secondary_link
    apply_filters( 'dashboard_secondary_link', __( 'http://planet.wordpress.org/' )
  • dashboard_secondary_feed
    apply_filters( 'dashboard_secondary_feed', __( 'http://planet.wordpress.org/feed/' )
  • dashboard_secondary_title
    apply_filters( 'dashboard_secondary_title', __( 'Other WordPress News' )
  • wp_network_dashboard_widgets
    apply_filters( 'wp_network_dashboard_widgets', array()
  • wp_user_dashboard_widgets
    apply_filters( 'wp_user_dashboard_widgets', array()
  • wp_dashboard_widgets
    apply_filters( 'wp_dashboard_widgets', array()

Defined actions

  • wp_network_dashboard_setup
    do_action( 'wp_network_dashboard_setup' );
  • wp_user_dashboard_setup
    do_action( 'wp_user_dashboard_setup' );
  • wp_dashboard_setup
    do_action( 'wp_dashboard_setup' );

Source code

function wp_dashboard_setup() {

	global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;

	$wp_dashboard_control_callbacks = array();

	$screen = get_current_screen();



	$update = false;

	$widget_options = get_option( 'dashboard_widget_options' );

	if ( !$widget_options || !is_array($widget_options) )

		$widget_options = array();



	/* Register Widgets and Controls */



	$response = wp_check_browser_version();



	if ( $response && $response['upgrade'] ) {

		add_filter( 'postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class' );

		if ( $response['insecure'] )

			wp_add_dashboard_widget( 'dashboard_browser_nag', __( 'You are using an insecure browser!' ), 'wp_dashboard_browser_nag' );

		else

			wp_add_dashboard_widget( 'dashboard_browser_nag', __( 'Your browser is out of date!' ), 'wp_dashboard_browser_nag' );

	}



	// Right Now

	if ( is_blog_admin() && current_user_can('edit_posts') )

		wp_add_dashboard_widget( 'dashboard_right_now', __( 'Right Now' ), 'wp_dashboard_right_now' );



	if ( is_network_admin() )

		wp_add_dashboard_widget( 'network_dashboard_right_now', __( 'Right Now' ), 'wp_network_dashboard_right_now' );



	// Recent Comments Widget

	if ( is_blog_admin() && current_user_can('moderate_comments') ) {

		if ( !isset( $widget_options['dashboard_recent_comments'] ) || !isset( $widget_options['dashboard_recent_comments']['items'] ) ) {

			$update = true;

			$widget_options['dashboard_recent_comments'] = array(

				'items' => 5,

			);

		}

		$recent_comments_title = __( 'Recent Comments' );

		wp_add_dashboard_widget( 'dashboard_recent_comments', $recent_comments_title, 'wp_dashboard_recent_comments', 'wp_dashboard_recent_comments_control' );

	}



	// Incoming Links Widget

	if ( is_blog_admin() && current_user_can('publish_posts') ) {

		if ( !isset( $widget_options['dashboard_incoming_links'] ) || !isset( $widget_options['dashboard_incoming_links']['home'] ) || $widget_options['dashboard_incoming_links']['home'] != get_option('home') ) {

			$update = true;

			$num_items = isset($widget_options['dashboard_incoming_links']['items']) ? $widget_options['dashboard_incoming_links']['items'] : 10;

			$widget_options['dashboard_incoming_links'] = array(

				'home' => get_option('home'),

				'link' => apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),

				'url' => isset($widget_options['dashboard_incoming_links']['url']) ? apply_filters( 'dashboard_incoming_links_feed', $widget_options['dashboard_incoming_links']['url'] ) : apply_filters( 'dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?scoring=d&ie=utf-8&num=' . $num_items . '&output=rss&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),

				'items' => $num_items,

				'show_date' => isset($widget_options['dashboard_incoming_links']['show_date']) ? $widget_options['dashboard_incoming_links']['show_date'] : false

			);

		}

		wp_add_dashboard_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control' );

	}



	// WP Plugins Widget

	if ( ( ! is_multisite() && is_blog_admin() && current_user_can( 'install_plugins' ) ) || ( is_network_admin() && current_user_can( 'manage_network_plugins' ) && current_user_can( 'install_plugins' ) ) )

		wp_add_dashboard_widget( 'dashboard_plugins', __( 'Plugins' ), 'wp_dashboard_plugins' );



	// QuickPress Widget

	if ( is_blog_admin() && current_user_can('edit_posts') )

		wp_add_dashboard_widget( 'dashboard_quick_press', __( 'QuickPress' ), 'wp_dashboard_quick_press' );



	// Recent Drafts

	if ( is_blog_admin() && current_user_can('edit_posts') )

		wp_add_dashboard_widget( 'dashboard_recent_drafts', __('Recent Drafts'), 'wp_dashboard_recent_drafts' );



	// Primary feed (Dev Blog) Widget

	if ( !isset( $widget_options['dashboard_primary'] ) ) {

		$update = true;

		$widget_options['dashboard_primary'] = array(

			'link' => apply_filters( 'dashboard_primary_link',  __( 'http://wordpress.org/news/' ) ),

			'url' => apply_filters( 'dashboard_primary_feed',  __( 'http://wordpress.org/news/feed/' ) ),

			'title' => apply_filters( 'dashboard_primary_title', __( 'WordPress Blog' ) ),

			'items' => 2,

			'show_summary' => 1,

			'show_author' => 0,

			'show_date' => 1,

		);

	}

	wp_add_dashboard_widget( 'dashboard_primary', $widget_options['dashboard_primary']['title'], 'wp_dashboard_primary', 'wp_dashboard_primary_control' );



	// Secondary Feed (Planet) Widget

	if ( !isset( $widget_options['dashboard_secondary'] ) ) {

		$update = true;

		$widget_options['dashboard_secondary'] = array(

			'link' => apply_filters( 'dashboard_secondary_link',  __( 'http://planet.wordpress.org/' ) ),

			'url' => apply_filters( 'dashboard_secondary_feed',  __( 'http://planet.wordpress.org/feed/' ) ),

			'title' => apply_filters( 'dashboard_secondary_title', __( 'Other WordPress News' ) ),

			'items' => 5,

			'show_summary' => 0,

			'show_author' => 0,

			'show_date' => 0,

		);

	}

	wp_add_dashboard_widget( 'dashboard_secondary', $widget_options['dashboard_secondary']['title'], 'wp_dashboard_secondary', 'wp_dashboard_secondary_control' );



	// Hook to register new widgets

	// Filter widget order

	if ( is_network_admin() ) {

		do_action( 'wp_network_dashboard_setup' );

		$dashboard_widgets = apply_filters( 'wp_network_dashboard_widgets', array() );

	} elseif ( is_user_admin() ) {

		do_action( 'wp_user_dashboard_setup' );

		$dashboard_widgets = apply_filters( 'wp_user_dashboard_widgets', array() );

	} else {

		do_action( 'wp_dashboard_setup' );

		$dashboard_widgets = apply_filters( 'wp_dashboard_widgets', array() );

	}



	foreach ( $dashboard_widgets as $widget_id ) {

		$name = empty( $wp_registered_widgets[$widget_id]['all_link'] ) ? $wp_registered_widgets[$widget_id]['name'] : $wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>';

		wp_add_dashboard_widget( $widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback'] );

	}

3569

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: