Как размещать пользовательские виджеты панели управления на боковой колонке

Мой вопрос:
Можно ли добавлять пользовательские виджеты панели управления в правый столбец, а не только на левой стороне рук?

Я использую wp_add_dashboard_plugin( $widget_id, $widget_name, $callback, $control_callback = null ) чтобы добавить код плагина, но у него нет никаких параметров, позволяющих вам установить позицию.

Какие-либо предложения?

Мои комментарии:
Версия 2.8 WordPress предполагает, что это возможно, но я не вижу ничего в коде (/wp-admin/includes/dashboard.php), который связан с этим.

Кажется, только добавить плагин панели инструментов, если его имя находится в массиве $side_widgets , содержимое которого: array('dashboard_quick_press', 'dashboard_recent_drafts', 'dashboard_primary', 'dashboard_secondary');

Мои мысли в том, что мне пришлось бы напрямую модифицировать $wp_meta_boxes['dashboard'] – но я не уверен в последствиях этого.

Solutions Collecting From Web of "Как размещать пользовательские виджеты панели управления на боковой колонке"

Вы правы – это не так. Функция wp_add_dashboard_widget работает. Поэтому просто используйте общий add_meta_box и укажите панель и место размещения:

 add_action( 'wp_dashboard_setup', 'my_dashboard_setup_function' ); function my_dashboard_setup_function() { add_meta_box( 'my_dashboard_widget', 'My Widget Name', 'my_dashboard_widget_function', 'dashboard', 'side', 'high' ); } function my_dashboard_widget_function() { // widget content goes here } 

В настоящее время нет простого способа API для предварительной сортировки виджетов по умолчанию, то есть ваш новый виджет всегда будет в нижней части списка.

Ниже приведен пример функции подключения, которая попытается поместить ваш виджет перед стандартными. Он делает это, вручную изменяя внутренний массив метабокс (из которых видны виджеты панели управления – один тип) и помещая ваш виджет в верхнюю часть списка, чтобы он отображался первым.

 function example_add_dashboard_widgets() { wp_add_dashboard_widget( 'example_dashboard_widget', 'Example Dashboard Widget', 'example_dashboard_widget_function' ); // Globalize the metaboxes array, this holds all the widgets for wp-admin global $wp_meta_boxes; // Get the regular dashboard widgets array // (which has our new widget already but at the end) $normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core']; // Backup and delete our new dashbaord widget from the end of the array $example_widget_backup = array( 'example_dashboard_widget' => $normal_dashboard['example_dashboard_widget'] ); unset( $normal_dashboard['example_dashboard_widget'] ); // Merge the two arrays together so our widget is at the beginning $sorted_dashboard = array_merge( $example_widget_backup, $normal_dashboard ); // Save the sorted array back into the original metaboxes $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard; } 

К сожалению, это работает только для людей, которые никогда не переупорядочивали свои виджеты. Как только пользователь сделает это, их существующие настройки будут отменять это, и им придется переместить ваш виджет на верх, чтобы он оставался там.

Вышеуказанный контент цитируется в Codex: форсирование виджета вверху