Comment customiser son dashboard WordPress

Customiser le dashboard de son WordPress

Glanées ici ou là sur le net on trouve tout un tas de fonctions qui permettent de modifier l’aspect général du dashboard. Je recence ici les générales :

1-Comment remplacer les « posts » ou « articles » par des « tutos » ou tout autre intitulé de votre choix

par exemple, on va dire que je n’ai pas besoin d’ »articles » dans mon site mais plutôt de « tutoriels ». Je vais donc devoir supprimer ce menu, ou mieux encore remplacer ce terme par celui de mon objet : tutoriel. Ainsi les utilisateurs connectés publieront des tutoriels, et non des articles.

function change_menu_title() {
global $menu;
global $submenu;
$menu[5][0] = 'Tutos';
$submenu['edit.php'][5][0] = 'Mon Tuto';
$submenu['edit.php'][10][0] = 'Ajouter un Tuto';
}
add_action( 'admin_menu', 'change_menu_title' );
// Edit submenus
function change_menu_object() {
global $wp_post_types;
$labels = &$wp_post_types['post']->labels;
$labels->name = 'Tuto';
$labels->singular_name = 'Nouvel Tuto';
$labels->add_new = 'Ajouter un Tuto';
$labels->add_new_item = 'Ajouter de nouveaux Tuto';
$labels->edit_item = 'Editer un Tuto';
$labels->new_item = 'Nouveau Tuto';
// $labels->all_items = 'Tous les tutos';
$labels->view_item = 'Voir le Tuto';
$labels->search_items = 'Rechercher un Tuto';
$labels->not_found = 'Aucun Tuto trouvé';
$labels->not_found_in_trash = 'Aucun Tuto dans la corbeille';
}
add_action( 'admin_menu', 'change_menu_object' );

2- Comment modifier le « saisissez votre titre » en fonction du statut de la page

Dans la page d’édition d’un article, le champ pour remplir le titre contient un placeholder (un texte grisé invitant à la rédaction) : « saisissez votre titre ici ». Il est possible de modifier ce texte, grâce au sinppet suivant :

function titre_edition($title){
$screen = get_current_screen();

switch ($screen->post_type)
{
case 'formation':
$title = __('Saisissez le titre de la formation', 'TEXT_DOMAIN');
break;
case 'post':
$title = __('Saisissez le titre de votre tuto', 'TEXT_DOMAIN');
break;
case 'page':
$title = __('Editez votre page', 'TEXT_DOMAIN');
break;
}
return $title;
}
add_filter('enter_title_here', 'titre_edition');

Rendu

1

On créée notre fonction, que l’on appelle comme on veut, on vérifie la page courante avec le get_current_screen puis on fait un switch case pour éditer l’intitulé en fonction du type de page sur lequel on se trouve. Ici « formation » est un custom post type, « post » concerne les articles et  « page » concerne les pages. On peut ainsi personnaliser un peu  plus l’édition de l’article.

3- Retirer du panneau d’administration toutes les box inutiles

Ici on crée donc une fonction remove_dashboard_widget qui, avec la fonction « remove_menu », va venir supprimer  l’affichage de tous les widget dont on n’a pas besoin.

Ensuite il faut enregistrer cette action dans le core de WORDPRESS : c’est la qu’intervient la fonction add_action(‘wp-dashboard_setup’, ‘remove_admin_widget’) qui prend en paramètre deux arguments : Le nom de l’action sur laquelle on veut que le hook (l’enregistrement) se réalise et le nom de notre fonction.

function remove_dashboard_meta() {
remove_meta_box( 'dashboard_incoming_links', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_plugins', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_primary', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_secondary', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
remove_meta_box( 'dashboard_recent_drafts', 'dashboard', 'side' );
remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_activity', 'dashboard', 'normal');//since 3.8
}
add_action( 'admin_init', 'remove_dashboard_meta' );

On passe de    tt à    y

Ma fonction s’appelle ici remove dashboard widget et sert comme son nom l’indique à supprimer des éléments de l’interface d’administration. Je peux mettre des conditions dans les vues, ou alors comme ici définir une règle définitive pour le  thème : par exemple, je veux, pour l’administrateur comme pour le client, que les boxes suivantes soient purement retirées de l’accueil admin : les commentaires récents, le liens entrants, les extensions, les billets en brouillon etc…

4-Retirer tous les éléments pouvant rappeler l’origine de WORDPRESS

Tous les liens et logos WORDPRESS sont supprimés, pour une meilleure expérience utilisateur.

Ici en revanche, on applique une condition : si l‘utilisateur en cours ne peut pas modifier les options « if( !current_user_can(‘manage_options’ )» , autrement si ce n’est pas l’administrateur, alors on applique la fonction « edit_admin_bar »  Dans cette fonction, nous appliquons la fonction remove_menu sur la globale wp_admin_bar et, en paramètre de la fonction on place le nom des liens inutiles. Un peu compliqué, mais voyons ca sous forme de code:

if (!current_user_can('manage_options')) {
function edit_admin_bar() {
global $wp_admin_bar;
$wp_admin_bar->remove_menu('wp-logo'); // Logo
$wp_admin_bar->remove_menu('about'); // A propos de WordPress
$wp_admin_bar->remove_menu('wporg'); // WordPress.org
$wp_admin_bar->remove_menu('documentation'); // Documentation
$wp_admin_bar->remove_menu('support-forums'); // Forum de support
$wp_admin_bar->remove_menu('feedback'); // Remarque
$wp_admin_bar->remove_menu('comments');

$wp_admin_bar->remove_menu('my-account');
$wp_admin_bar->remove_menu('updates'); // Mises à jour
$wp_admin_bar->remove_menu('new-content'); // Publier
}
add_action('wp_before_admin_bar_render', 'edit_admin_bar');
}

Et on passe  de ça :t   à ça : g

5- Cacher, sans les supprimer, tous les menus de l’interface d’administration

Le but ici est que l’utilisateur et l’administrateur n’aient pas le même rendu visuel, ni l’accès aux mêmes options :

Je place une condition avec un (if( !current_user_can(‘manage_options’)) puis  je crée un tableau dans la variable $restricted, contenant tous les menus que je veux faire disparaître.

function remove_admin_menus() {
global $menu;
if (!current_user_can('manage_options')) {
$restricted = array(__('Media'), __('Links'), __('Pages'), __('Tools'), __('Users'), __('Settings'), __('Comments'), __('Plugins'), __('Formations'), __('Formations Cortechs'), __('contacts'), __('devis'));
end($menu);
} else {
$restricted = array(__('Links'), __('Tools'));
end($menu);
}
while (prev($menu)) {
$value = explode(' ', $menu[key($menu)][0]);
if (in_array($value[0] != NULL ? $value[0] : "", $restricted)) {
unset($menu[key($menu)]);
}
}
}add_action('admin_menu', 'remove_admin_menus');

Toujours pareil, si ce n’est pas l’admin, je veux cacher les onglets listés dans mon premier array. Les onglets formations etc, sont ici des custom post type, je les cache pour que l’utilisateur ne puisse pas les éditer. Si c’est l’admin, je ne lui cache que les ‘Links’ et les ‘Tools’ dont il n’a pas besoin.

On se retrouve donc avec un panneau d’admin différent que celui de l’utilisateur, pour lequel on décide ici de pratiquement tout retirer. L’utilisateur pourra consulter son profil et poster des articles uniquement.

Les menus administrateur, s et le menu Utilisateur :         suite17

Voila donc quelques fonctions toutes simples pour commencer à modifier l’aspect visuel du Dashboard admin !