Мой вопрос:
Можно ли добавлять пользовательские виджеты панели управления в правый столбец, а не только на левой стороне рук?
Я использую 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']
– но я не уверен в последствиях этого.
Вы правы – это не так. Функция 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: форсирование виджета вверху