diff --git a/src/wp-admin/includes/dashboard.php b/src/wp-admin/includes/dashboard.php index 98743939a3..ae40a94636 100644 --- a/src/wp-admin/includes/dashboard.php +++ b/src/wp-admin/includes/dashboard.php @@ -148,6 +148,14 @@ function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_ $screen = get_current_screen(); global $wp_dashboard_control_callbacks; + $private_callback_args = array( '__widget_basename' => $widget_name ); + + if ( is_null( $callback_args ) ) { + $callback_args = $private_callback_args; + } else if ( is_array( $callback_args ) ) { + $callback_args = array_merge( $callback_args, $private_callback_args ); + } + if ( $control_callback && current_user_can( 'edit_dashboard' ) && is_callable( $control_callback ) ) { $wp_dashboard_control_callbacks[$widget_id] = $control_callback; if ( isset( $_GET['edit'] ) && $widget_id == $_GET['edit'] ) { diff --git a/src/wp-admin/includes/screen.php b/src/wp-admin/includes/screen.php index 3c6a5131b9..1e57622003 100644 --- a/src/wp-admin/includes/screen.php +++ b/src/wp-admin/includes/screen.php @@ -117,10 +117,19 @@ function meta_box_prefs( $screen ) { // Submit box cannot be hidden if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] ) continue; - $box_id = $box['id']; - echo '\n"; + + $widget_title = $box['title']; + + if ( isset( $box['args']['__widget_basename'] ) ) { + $widget_title = $box['args']['__widget_basename']; + } + + printf( + '', + esc_attr( $box['id'] ), + checked( in_array( $box['id'], $hidden ), false, false ), + $widget_title + ); } } } diff --git a/src/wp-admin/includes/template.php b/src/wp-admin/includes/template.php index cc590e3dfd..ef7621a02d 100644 --- a/src/wp-admin/includes/template.php +++ b/src/wp-admin/includes/template.php @@ -1027,8 +1027,16 @@ function do_meta_boxes( $screen, $context, $object ) { $hidden_class = in_array($box['id'], $hidden) ? ' hide-if-js' : ''; echo '
' . "\n"; if ( 'dashboard_browser_nag' != $box['id'] ) { + $widget_title = $box[ 'title' ]; + + if ( is_array( $box[ 'args' ] ) && isset( $box[ 'args' ][ '__widget_basename' ] ) ) { + $widget_title = esc_html( $box[ 'args' ][ '__widget_basename' ] ); + // Do not pass this parameter to the user callback function. + unset( $box[ 'args' ][ '__widget_basename' ] ); + } + echo ''; }