Статьи

Как сделать WordPress проще для клиентов, удалив ненужные пункты меню

WordPress меню

В моих предыдущих постах на WordPress мы узнали, как создать плагин , изменить брендинг панели администрирования и удалить ненужные виджеты панели инструментов и мета-блоки .

В этом посте мы внесем некоторые фундаментальные изменения в главное меню администрирования. Если вы еще не создали первоначальный плагин, прочитайте первую часть . С возвращением — начнем …

Стандартное меню WordPress может быть немного сложным, а сторонние плагины часто добавляют дополнительные элементы. Вы можете ограничить роли пользователей, чтобы клиенты не видели все пункты меню, но, если вы не используете каждую функцию WordPress, они по-прежнему будут видеть параметры, которые не относятся к их сайту.

Мы создадим функцию, которая удаляет избыточные ссылки и упрощает работу ваших клиентов. Вот полный код, который вы можете скопировать в easy-admin.php:


// remove unnecessary menus
function remove_admin_menus() {

	global $menu, $submenu;

	// main menus removed for all users
	$restrict = explode(',', 'Links,Comments');

	// sub-menus removed for all users
	$restrictsub = explode(',', 'Categories,Post Tags');

	// main menus removed for everyone except administrators
	$restrict_user = explode(',', 'Media,Profile,Appearance,Plugins,Users,Tools,Settings');

	// sub-menus removed for everyone except administrators
	$restrictsub_user = explode(',', 'Updates,My Sites');

	// WP localization
	$f = create_function('$v,$i', 'return __($v);');
	array_walk($restrict, $f);
	if (!current_user_can('activate_plugins')) {
		array_walk($restrict_user, $f);
		$restrict = array_merge($restrict, $restrict_user);
		array_walk($restrictsub_user, $f);
		$restrictsub = array_merge($restrictsub, $restrictsub_user);
	}

	// remove menus
	end($menu);
	while (prev($menu)) {
		$k = key($menu);
		$v = explode(' ', $menu[$k][0]);
		if(in_array(is_null($v[0]) ? '' : $v[0] , $restrict)) unset($menu[$k]);
	}

	// remove sub-menus
	foreach ($submenu as $k => $p) {
		foreach($submenu[$k] as $j => $s) {
			if (in_array(is_null($s[0]) ? '' : $s[0] , $restrictsub)) unset($submenu[$k][$j]);
		}
	}

}
add_action('admin_menu', 'remove_admin_menus');

Строки в верхней части этой функции определяют, какие пункты меню удаляются:

  • $ restrict (строка 5) содержит разделенный запятыми список пунктов главного меню, которые не будут показаны ни одному пользователю, включая администраторов. В приведенном выше примере мы скрываем ссылки и комментарии, поскольку они не используются на нашем сайте.
  • $ limittsub (строка 7) содержит разделенный запятыми список пунктов подменю, которые не будут показаны ни одному пользователю. Мы отключили категории и теги сообщений, которые обычно отображаются в главном меню сообщений.
  • $ restrict_user (строка 9) содержит разделенный запятыми список пунктов главного меню, которые скрыты для всех, кроме администраторов. В приведенном выше примере отключено все, кроме панели инструментов, страниц и сообщений. (Не администраторы обычно не видят Внешний вид и Плагины, но другие плагины могут изменить эту функциональность).
  • $ limittsub_user (строка 11) содержит разделенный запятыми список элементов подменю, которые скрыты для всех, кроме администраторов. Мы отключили обновления и личные сайты, которые обычно отображаются в главном меню панели инструментов.

упрощенное меню WordPress

Если вы не хотите, чтобы какие-либо элементы были удалены для определенного значения, установите для него пустой массив, например, $restrict = array();

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