Déplacer le menu d’une extension WordPress dans un sous-menu en admin

Déplacer le menu d’une extension WordPress dans un sous-menu en admin

aChaque plugin/extension ajoute ses propres réglages dans l’administration de WordPress. Il faut donc ranger se menu de la manière la plus logique possible. Sauf qu’il y a une tendance générale à vouloir être visible de tous, avoir son logo dans la menu principale. Je dis « oui » pour un plugin conséquent qui a plusieurs page de réglages.

exemple-menu

Cela devient problématique quand on commence a voir pas mal d’extensions, la liste se rallonge et on commence à maudire le petit plugin qui s’est ajouté alors qu’il a juste une page d’information.

Heureusement WordPress permet de configurer la liste du menu et sous menu.

Je vais prendre l’exemple du plugin SG CachePress, un plugin de cache réserver à l’hébergeur Siteground (que je recommande au passage, très bon services et support client) qui n’a qu’une seule page d’options et se retrouve dans la liste principale.
Je vais donc le déplacer logiquement dans les réglages (ca aurait très bien pu être « Outils »)


/**
 * Filtre permettant de déplacer le menu de SG CachePress dans les réglages
 */
add_action('admin_menu', 'ctw_move_cachepress_to_settings', 100 );

function ctw_move_cachepress_to_settings(){

	global $menu;

	if ( is_plugin_active( 'sg-cachepress/sg-cachepress.php' ) ){ // On vérifie si le plugin existe et est actif

		/**
		* Petite astuce, on commence  à lire le tableau à l'envers, car les plugin s ont tendance a être placé à la fin
		*/
		foreach ( array_reverse( $menu, TRUE) as $key => $value ) { 

			if( SG_CachePress::PLUGIN_SLUG == $value[2] ) { // Si le slug est égal à la valeur du menu

				// On  déplace  vers un sous-menu de réglage
				add_options_page(
					$value[0], // Page title
					$value[1],    // Menu item title
					$value[2],  // Capability
					$value[3],   // Page slug
					$value[4]    //  Callback
				);
				// On supprime dans le menu générale
				unset( $menu[ $key ] );

				break;
			}
		}
	}
}
Déplacement de SG CachePress dans les Réglages

Les variables à retenir :

/**
* Variable globale : Tableau des menus principaux de l'amdin WordPress
*/
global $menu;

/**
* Variable globale : Tableau des sous-menus de l'amdin WordPress
*/
global $submenu;
Variables globale menu et sous-menu

Documentation : https://codex.wordpress.org/Administration_Menus

add_menu_page() qui permet d’ajouter un menu principal.

add_submenu_page() qui permet d’ajouter un sous-menu.

Et les fonctions qui est découlent : add_dashboard_page(), add_posts_page(), add_media_page(), add_links_page(), add_pages_page(), add_comments_page(),add_theme_page(), add_plugins_page(), add_users_page(), add_management_page()

Les fonctions de suppressions : remove_menu_page(), , remove_submenu_page(),

 


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *