WordPress函数wp_add_dashboard_widget()

描述:

此函数使用WordPress小工具api给管理面板添加一个新的小部件。

用法:

wp_add_dashboard_widget($widget_id, $widget_name, $callback, $control_callback, $callback_args );

参数:

$widget_id

(string) (必填)  小工具ID,将用它最为css的class和它在小工具数组中的键值。

默认值: None

$widget_name

(string) (必填) 名称

默认值: None

$callback

(string) (必填)  显示小工具实际内容的函数名称。

默认值: None

$control_callback

(string) (可选) 创建的函数名称,该函数将处理小工具选项(配置)表单的提交,并且还将显示表单元素。

默认值:

$callback_args

(array) (可选) 要传递到回调函数的参数。回调将接收$post对象以及通过该变量传递的任何参数。

默认值:

示例:

// Function that outputs the contents of the dashboard widget
function dashboard_widget_function( $post, $callback_args ) {
	echo "Hello World, this is my first Dashboard Widget!";
}

// Function used in the action hook
function add_dashboard_widgets() {
	wp_add_dashboard_widget('dashboard_widget', 'Example Dashboard Widget', 'dashboard_widget_function');
}

// Register the new dashboard widget with the 'wp_dashboard_setup' action
add_action('wp_dashboard_setup', 'add_dashboard_widgets' );

源文件:

/**
 *
 * @global array   $wp_dashboard_control_callbacks
 *
 * @param string   $widget_id
 * @param string   $widget_name
 * @param callback $callback
 * @param callback $control_callback
 * @param array    $callback_args
 */
function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null, $callback_args = null ) {
	$screen = get_current_screen();
	global $wp_dashboard_control_callbacks;

	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'] ) {
			list($url) = explode( '#', add_query_arg( 'edit', false ), 2 );
			$widget_name .= ' <span class="postbox-title-action"><a href="https://wphun.com/f/'%20.%20esc_url(%20$url%20)%20.%20'">' . __( 'Cancel' ) . '</a></span>';
			$callback = '_wp_dashboard_control_callback';
		} else {
			list($url) = explode( '#', add_query_arg( 'edit', $widget_id ), 2 );
			$widget_name .= ' <span class="postbox-title-action"><a class="edit-box open-box" href="https://wphun.com/f/'%20.%20esc_url(">' . __( 'Configure' ) . '</a></span>';
		}
	}

	$side_widgets = array( 'dashboard_quick_press', 'dashboard_primary' );

	$location = 'normal';
	if ( in_array($widget_id, $side_widgets) )
		$location = 'side';

	$priority = 'core';
	if ( 'dashboard_browser_nag' === $widget_id )
		$priority = 'high';

	add_meta_box( $widget_id, $widget_name, $callback, $screen, $location, $priority, $callback_args );
}