J'ai récemment essayé de réorganiser les widgets de tableau de bord en écrivant un plugin. J'ai accompli ceci:
avec le code suivant:
<?php
/*
* Plugin Name: Custom Dashboard
* Description: Custom dashboard for Avare sites.
* Author: Avare
* Version: 1.0
*/
function sort_dashboard_widgets() {
$left_column_widgets[] = 'dashboard_right_now';
$left_column_widgets[] = 'dashboard_recent_comments';
$left_column_widgets[] = 'dashboard_incoming_links';
$right_column_widgets[] = 'dashboard_quick_press';
$right_column_widgets[] = 'dashboard_recent_drafts';
$right_column_widgets[] = 'dashboard_primary';
$right_column_widgets[] = 'dashboard_secundary';
// Global the $wp_meta_boxes variable (this will allow us to alter the array)
global $wp_meta_boxes;
// We then unset that part of the array
unset($wp_meta_boxes['dashboard']['normal']['core']);
unset($wp_meta_boxes['dashboard']['side']['core']);
// Then we make a backup of the widget areas
$left_dashboard = $wp_meta_boxes['dashboard']['normal']['core'];
$right_dashboard = $wp_meta_boxes['dashboard']['side']['core'];
// Then we merge them in some sort of way (is this necessary?)
$sorted_left_dashboard = array_merge((array)$left_column_widgets, (array)$left_dashboard);
$sorted_right_dashboard = array_merge((array)$right_column_widgets, (array)$right_dashboard);
// Now we add the sorted widgets back in
$wp_meta_boxes['dashboard']['normal']['core'] = $sorted_left_dashboard;
$wp_meta_boxes['dashboard']['side']['core'] = $sorted_right_dashboard;
}
add_filter('wp_dashboard_setup', 'sort_dashboard_widgets');
Comme vous pouvez le voir sur la capture d'écran que j'ai faite, il semble que le plug-in ne regarde que la première lettre de$ left_column_widgetset$ right_column_widgets, ce qui cause les erreurs (parce que 'd' n'est pas un slug de widget valide). Y a-t-il un moyen de résoudre ce problème?
À votre santé
Whoop, je l'ai compris. :) Bien que je l'ai compris avant kaiser a répondu à ma question, je voudrais quand même le remercier pour sa réponse claire et géniale. Vous trouverez ci-dessous le code que j'ai écrit pour réorganiser les widgets du tableau de bord.
<?php
/**
* Plugin Name: Custom Dashboard
* Description: Custom dashboard for Avare sites.
* Author: Avare
* Version: 1.0
*/
function sort_dashboard_widgets() {
// Global the $wp_meta_boxes variable (this will allow us to alter the array)
global $wp_meta_boxes;
// Then unset everything in the array
unset($wp_meta_boxes['dashboard']['normal']['core']);
unset($wp_meta_boxes['dashboard']['side']['core']);
// Add widgets to left column
add_meta_box('dashboard_right_now', __('Right Now'), 'wp_dashboard_right_now', 'dashboard', 'normal', 'core');
add_meta_box('dashboard_recent_comments', __('Recent Comments'), 'wp_dashboard_recent_comments', 'dashboard', 'normal', 'core');
// Add widgets to right column
add_meta_box('dashboard_quick_press', __('QuickPress'), 'wp_dashboard_quick_press', 'dashboard', 'side', 'core');
add_meta_box('dashboard_recent_drafts', __('Recent Drafts'), 'wp_dashboard_recent_drafts', 'dashboard', 'side', 'core');
}
add_action('wp_dashboard_setup', 'sort_dashboard_widgets');
Veuillez noter que ce code n'utilise pas tous les widgets de tableau de bord disponibles.
Premièrement, il y a un léger malentendu. wp_dashboard_setup
est unactionet non un filtre. S'il s'agissait d'un filtre, il aurait un ou plusieurs arguments et devrait renvoyer le premier.
Pour un exemple de cette action, voir le plug-in mu que j'utilise:
<?php
/**
* Plugin Name: Remove Dashboard Widgets
* Description: Removes all Dashboard Widgets
*/
function dashboard_widgets()
{
remove_meta_box( 'dashboard_browser_nag', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_plugins', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
remove_meta_box( 'dashboard_recent_drafts', 'dashboard', 'side' );
remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );
remove_meta_box( 'dashboard_secondary', 'dashboard', 'side' );
}
add_action( 'wp_dashboard_setup', 'dashboard_widgets' );
Après avoir supprimé ces widgets, vous pouvez les rajouter à l'aide de
add_dashboard_widget( $widget_id, $widget_name, $callback );
Pour plus d'informations, consultez le Codex et l'API Dashboard Widgets . Pour voir les valeurs par défaut, regardez dans /wp-admin/includes/dashboard.php
-> wp_setup_dashboard()
. Ensuite, ajoutez-les simplement à votre guise/besoin.
Vous avez également différentes options: Filtres.
Mais d’abord, nous devrions clarifierle// tableau de bord que vous ciblez. Tous ceux-ci auront dans certains cas (plugins, etc.) différents tableaux de bord et différents filtres
wp_network_dashboard_widgets
wp_user_dashboard_widgets
wp_dashboard_widgets
Tous ces filtres filtrent le tableau $dashboard_widgets
(et devraient le renvoyer).
Si vous souhaitez étendre les widgets par défaut, vous voudrez utiliser le crochet 'do_meta_boxes'
, qui comporte trois arguments (ID d'écran, emplacement comme côté, normal, etc.) et un troisième argument vide.
Vous devrez accepter le fait que les utilisateurs peuvent réorganiser ces widgets (ou même les désactiver). C’est quelque chose qui devrait être ainsi et maintenu ainsi.