Заточка админки — 13 полезных хаков

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

wordpress админка

Настроек на самом деле очень много, а если вы хорошо знаете php функционал WordPress, то они вообще практически безграничны. Мы сегодня кроме плагина, который поможет осуществить заточку админки под свои нужны, разберем самые интересные и полезные хаки.

Для начала посмотрите видео урок, а потом будем править код.


Админка WordPress — плагин для настройки

Для это мы будем использовать специальный плагин Adminimize, который позволит не только изменить отображение тех или иных элементов админки для самого администратора сайта, но и включить или отключить пункты меню, отображение панелей и виджетов админки, стили оформления и самое главное — функционал для работы с тем или иным модулем системы (заметки, страница, ссылки и т.д.)

Хаки для работы с админкой WordPress

Все описанные изменения вносятся в файл functions.php, если не указано что-то еще.

1. Удалить пункты меню из верхней панели администратора

function wps_admin_bar() {
    global $wp_admin_bar;
    $wp_admin_bar->remove_menu('wp-logo');
    $wp_admin_bar->remove_menu('about');
    $wp_admin_bar->remove_menu('wporg');
    $wp_admin_bar->remove_menu('documentation');
    $wp_admin_bar->remove_menu('support-forums');
    $wp_admin_bar->remove_menu('feedback');
    $wp_admin_bar->remove_menu('view-site');
}
add_action( 'wp_before_admin_bar_render', 'wps_admin_bar' );

2. Убрать пункт «Помощь» из меню в правом верхнем углу

function hide_help() {
echo '';
}
add_action('admin_head', 'hide_help');

3. Добавить новые пункты в верхнее меню

function wp_admin_bar_new_item() {
global $wp_admin_bar;
$wp_admin_bar->add_menu(array(
'id' => 'wp-admin-bar-new-item',
'title' => __('Новый пункт меню'),
'href' => 'http://www.site.ru/new/'
));
}
add_action('wp_before_admin_bar_render', 'wp_admin_bar_new_item');

4. Удалить пункты из бокового меню админки WordPress

add_action( 'admin_menu', 'remove_links_menu' );
function remove_links_menu() {
     remove_menu_page('index.php'); // Консоль
     remove_menu_page('edit.php'); // Заметки
     remove_menu_page('upload.php'); // Медиафайлы
     remove_menu_page('link-manager.php'); // Ссылки
     remove_menu_page('edit.php?post_type=page'); // Страницы
     remove_menu_page('edit-comments.php'); // Комментарии
     remove_menu_page('themes.php'); // Внешний вид
     remove_menu_page('plugins.php'); // Плагины
     remove_menu_page('users.php'); // Пользователи
     remove_menu_page('tools.php'); // Инструменты
     remove_menu_page('options-general.php'); // Параметры
}





5. Удалить подменю из боковой колонки также легко, только в функции надо использовать такую строку

remove_submenu_page('themes.php','widgets.php');

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

6. Изменение названия пунктов бокового меню

function edit_admin_menus() {
	global $menu;
	$menu[70][0] = 'Юзеры'; // Изменяем название пункта Пользователи на Юзеры.
}
add_action( 'admin_menu', 'edit_admin_menus' );

В данном примере есть один секрет. Видите этот номер $menu[70][0] — семьдесят? Это ID пункта. Для каждого пункта есть свой идентификационный номер, который необходимо здесь указвать. Список всех доступных номеров ниже (кликабельно).

Редактировать админку wordpress

7. Изменения названий подменю в боковой панели.

Аналогично предыдущему пункту, только здесь используется переменная

$submenu
function edit_admin_menus() {
	global $menu;
	global $submenu;
	$menu[70][0] = 'Юзеры'; // меняем Пользователи на Юзеры
	$submenu['users.php'][5][0] = 'Все юзеры';  // меняем Все пользователи на Все юзеры
	$submenu['users.php'][10][0] = 'Новый юзер'; // меняем Добавить нового на Новый юзер
	$submenu['users.php'][15][0] = 'Кабинет юзера'; // меняем Ваш профиль на Кабинет юзера
}
add_action( 'admin_menu', 'edit_admin_menus' );

8. Изменить текст записи в футере админки

function remove_footer_admin () {
  echo 'Мой собственный текст';
}
add_filter('admin_footer_text', 'remove_footer_admin');

9. Отображать виджеты на главной странице панели администратора в одну колонку

function single_screen_columns( $columns ) {
    $columns['dashboard'] = 1;
    return $columns;
}
add_filter( 'screen_layout_columns', 'single_screen_columns' );
function single_screen_dashboard(){return 1;}
add_filter( 'get_user_option_screen_layout_dashboard', 'single_screen_dashboard' );

10. Создать в списке записей новую колонку со счетчиком пингбэков и трекбэков

function commentCount($type = 'comments'){
	if($type == 'trackbacks'):
		$typeSql = 'comment_type = "трекбэк"';
		$oneText = 'Один трекбэк';
		$moreText = '% трекбэков';
		$noneText = 'Нет трекбэков';
	elseif($type == 'pingbacks'):
		$typeSql = 'comment_type = "пингбэк"';
		$oneText = 'Один пингбэк';
		$moreText = '% пингбэков';
		$noneText = 'нет пингбэков';
	endif;
	global $wpdb;
    $result = $wpdb->get_var('
        SELECT
            COUNT(comment_ID)
        FROM
            '.$wpdb->comments.'
        WHERE
            '.$typeSql.' AND
            comment_approved="1" AND
            comment_post_ID= '.get_the_ID()
    );
	if($result == 0):
		echo str_replace('%', $result, $noneText);
	elseif($result == 1):
		echo str_replace('%', $result, $oneText);
	elseif($result > 1):
		echo str_replace('%', $result, $moreText);
	endif;
}
add_filter('manage_posts_columns', 'posts_columns_counts', 1);
add_action('manage_posts_custom_column', 'posts_custom_columns_counts', 1, 2);
function posts_columns_counts($defaults){
    $defaults['wps_post_counts'] = __('Counts');
    return $defaults;
}
function posts_custom_columns_counts($column_name, $id){
	if($column_name == 'wps_post_counts'){
		commentCount('trackbacks'); echo "
";
		commentCount('pingbacks');
          }
}

11. Создать колонку в списке записей со счетчиков прикрепленных вложений

add_filter('manage_posts_columns', 'posts_columns_attachment_count', 5);
add_action('manage_posts_custom_column', 'posts_custom_columns_attachment_count', 5, 2);
function posts_columns_attachment_count($defaults){
    $defaults['wps_post_attachments'] = __('Вложения');
    return $defaults;
}
function posts_custom_columns_attachment_count($column_name, $id){
	if($column_name == 'wps_post_attachments'){
	$attachments = get_children(array('post_parent'=>$id));
	$count = count($attachments);
	if($count !=0){echo $count;}
    }
}

12. Создать колонку с картинкой превью новости

add_filter('manage_posts_columns', 'tcb_add_post_thumbnail_column', 5);
add_filter('manage_pages_columns', 'tcb_add_post_thumbnail_column', 5);

function tcb_add_post_thumbnail_column($cols){
  $cols['tcb_post_thumb'] = __('Превью');
  return $cols;
}

add_action('manage_posts_custom_column', 'tcb_display_post_thumbnail_column', 5, 2);
add_action('manage_pages_custom_column', 'tcb_display_post_thumbnail_column', 5, 2);

function tcb_display_post_thumbnail_column($col, $id){
  switch($col){
    case 'tcb_post_thumb':
      if( function_exists('the_post_thumbnail') )
        echo the_post_thumbnail( 'admin-list-thumb' );
      else
        echo 'Не поддерживается в шаблоне';
      break;
  }
}

13. Удалить возможность выбора цветовой схемы админки

function admin_color_scheme() {
   global $_wp_admin_css_colors;
   $_wp_admin_css_colors = 0;
}
add_action('admin_head', 'admin_color_scheme');

Используя данные методы вы сможете более детально настроить админку WordPress на своем блоге. Удачи!

Поделись этой статьей с друзьями!

Это будет интересно прочитать:

Добавить комментарий