Настройка админки WordPress для клиента

Share on Pinterest
Share with your friends










Отправить
6
Всего

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

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

Упрощаем админ панель WordPress

1. Удаляем ненужные пункты меню

WordPress для клиента1

Ограничение доступа пользователям к определенному функционалу сайта – необходимая мера. Благодаря этому можно, к примеру, предотвратить случайное удаление или перемещение тем. Для удаление пунктов меню необходимо найти в папке с темой файл functions.php и добавить в него несколько строк кода:

function remove_menus(){
    global $menu;
    $restricted = array(
        __('Dashboard'),
        __('Posts'),
        __('Media'),
        __('Links'),
        __('Pages'),
        __('Appearance'),
        __('Tools'),
        __('Users'),
        __('Settings'),
        __('Comments'),
        __('Plugins')
    );
    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_menus');

 

2. Полное удаление административного меню

Многих интересует вопрос – как полностью удалить административное меню. Сделать это довольно просто. Необходимо внести небольшие правки в файл functions.php:

add_action('admin_head', 'kill_adminmenu');
function kill_adminmenu(){
    $GLOBALS['menu'] = array();
    echo "
<style type='text/css'>#adminmenuwrap, #adminmenuback{display:none!important;} #wpcontent{margin-left:10px!important;}</style>

";
}

3. Помещаем на страницу входа свой логотип

WordPress для клиента2

Данная возможность не является полезной, но ваш станет привлекательнее, а клиент будет рад наличию его логотипа в админке. Для изменения логотипа нам понадобится все тот же файл functions.php:

function my_custom_login_logo(){
    echo '
<style type="text/css">
    h1 a { background-image:url('.get_bloginfo('template_directory').'/images/custom-login-logo.gif) !important; }
    </style>

';
}
add_action('login_head', 'my_custom_login_logo');

Файл custom-login-logo.gif должен быть расположен в папке images (находится в папке темы).

4. Изменяем внутренний логотип админки

После добавления логотипа на страницу входа будет уместным изменить лого и в самой административной панели. Работаем с тем же файлом functions.php:

function my_custom_logo(){
    echo '
<style type="text/css">
    #header-logo { background-image: url('.get_bloginfo('template_directory').'/images/custom-logo.gif) !important; }
    </style>

';
}
add_action('admin_head', 'my_custom_logo');

Как и в предыдущем шаге, файл custom-logo.gif размещаем в папке images темы.

5. Отключение оповещений об обновлениях

Клиентам нет нужды получать информацию об обновлениях движка. Для отключения оповещений вставляем в файл functions.php следующий код:

if( !current_user_can( 'edit_users' ) ){
    add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
    add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
    // для 3.0+
    add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );
}

6. Удаляем лишние виджеты в консоли

Панель управления WordPress, начиная с версии 2.7, включает в себя множество полезного функционала. Но клиенты не нуждаются в большей части виджетов, поэтому стоит их отключить. Вносим коррективы в файл functions.php:

/* Удаление виджетов из Консоли WordPress */
function clear_dash(){
    $side = &$GLOBALS['wp_meta_boxes']['dashboard']['side']['core'];
    $normal = &$GLOBALS['wp_meta_boxes']['dashboard']['normal']['core'];

    unset($side['dashboard_quick_press']); //Быстрая публикация
//    unset($side['dashboard_recent_drafts']); //Полседние черновики
    unset($side['dashboard_primary']); //Блог WordPress
    unset($side['dashboard_secondary']); //Другие Нновости WordPress

    unset($normal['dashboard_incoming_links']); //Входящие ссылки
//    unset($normal['dashboard_right_now']); //Прямо сейчас
    unset($normal['dashboard_recent_comments']); //Последние комментарии
    unset($normal['dashboard_plugins']); //Последние Плагины
}
add_action('wp_dashboard_setup', 'clear_dash' );

7. Добавляем собственные виджеты в админ-панель

Если в стандартном пакете функций нет необходимой, можно добавить ее. Для этого в файл functions.phpдобавляем следующий код:

function example_dashboard_widget_function(){
    // Показать то, что вы хотите показать
    echo "Привет, мир. Я — великий виджет админки, созданный великими программистами";
}
// Создаем функцию, используя хук действия
function example_add_dashboard_widgets() {
    wp_add_dashboard_widget('example_dashboard_widget', 'Пример виджета админки', 'example_dashboard_widget_function');
}
// Хук в 'wp_dashboard_setup', чтобы зарегистрировать нашу функцию среди других
add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' );

8. Меняем цвет шапки

Для изменения цвета шапки административной панели на более подходящий ищем в CSS файле нашего стиля соответствующий фрагмент кода и корректируем его:

add_action('admin_head', 'custom_colors');
function custom_colors() {
    echo '
<style type="text/css">
    #wphead{background:#069}
    </style>

';
}

9. Добавляем справочные сообщения

Для улучшения понимания пользователями работы с блогом стоит внедрить отображение справочных сообщений. Контекстную справку включаем добавлением кода в functions.php:

function my_admin_help($text, $screen) {
    // Проверим, только ли для страницы настроек это применимо
    if (strcmp($screen, MY_PAGEHOOK) == 0 ) {
        $text = 'Вот некоторая полезная информация, которая поможет вам разобраться с плагином...';
        return $text;
    }
    // Пусть по умолчанию штуки с помощью будут и на других страницах панели управления
    return $text;
}
add_action( 'contextual_help', 'my_admin_help' );

10. Просмотр ошибок сервера из панели администратора

PHP-ошибки сервера можно отслеживать непосредственно из админки. Для этого добавляем функцию для считывания логов сервера и вывода их в виджет. После добавления функции также станет возможной очистка лога из админ-панели:

/* Логи ошибок в виджете админ-панели, в консоли
--------------------------------------------------------------------- */
function slt_PHPErrorsWidget() {
    $logfile = $_SERVER['DOCUMENT_ROOT'] . '/../error_log'; // Полный пусть до лог файла
    $displayErrorsLimit = 100; // Максимальное количество ошибок, показываемых в виджете
    $errorLengthLimit = 300; // Максимальное число символов для описания каждой ошибки
    $fileCleared = false;
    $userCanClearLog = current_user_can( 'manage_options' );

    // Очистить файл?
    if( $userCanClearLog && isset( $_GET["slt-php-errors"] ) && $_GET["slt-php-errors"]=="clear" ){
        $handle = fopen( $logfile, "w" );
        fclose( $handle );
        $fileCleared = true;
    }
    // Читаем файл
    if( file_exists( $logfile ) ){
        $errors = file( $logfile );
        $errors = array_reverse( $errors );
        if ( $fileCleared ) echo '

<em>Файл очищен.</em>

';
        if ( $errors ) {
            echo '

 Ошибок: '. count( $errors ) . '.';
            if ( $userCanClearLog )
                echo ' [ <b><a href="'. admin_url() .'?slt-php-errors=clear" onclick="return confirm(\'Вы уверенны?\');">Очистить файл логов</a></b> ]';
            echo '

';
            echo '
<div id="slt-php-errors" style="max-height:500px; overflow:auto; padding:5px; background-color:#FAFAFA;">';
            echo '
<ol style="padding:0; margin:0;">';
            $i = 0;
            foreach( $errors as $error ){
                echo '
<li style="padding:2px 4px 6px; border-bottom:1px solid #ececec;">';
                $errorOutput = preg_replace( '/\[([^\]]+)\]/', '<b>[$1]</b>', $error, 1 );
                if( strlen( $errorOutput ) > $errorLengthLimit ){
                    echo substr( $errorOutput, 0, $errorLengthLimit ).' [...]';
                }
                else
                    echo $errorOutput;
                echo '</li>

';
                $i++;
                if( $i > $displayErrorsLimit ){
                    echo '

<em>Набралось больше чем '. $displayErrorsLimit .' ошибок в файле...</em>

';
                    break;
                }
            }
            echo '</ol>
</div>

';
        }
        else
            echo '

Ошибок нет!

';
    }
    else
        echo '

<em>Произошла ошибка чтения лог файла.</em>

';
}
// Добавляем виджет
function slt_dashboardWidgets(){
    wp_add_dashboard_widget( 'slt-php-errors', 'PHP errors', 'slt_PHPErrorsWidget' );
}
add_action( 'wp_dashboard_setup', 'slt_dashboardWidgets' );

11. Упрощение ссылки для входа на сайт

По умолчанию страница входа на сайт расположена по ссылке http://site.ru/wp-login.php. Чтобы сделать ее более удобной, необходимо добавить в файл .htaccess строку:

RewriteRule ^login$ http://site.ru/wp-login.php [NC,L]

12. Умное отображение PHP-ошибок

Для отключения показа PHP-ошибок всем пользователям (кроме администратора) добавляем в файлfunctions.php строки:

add_action('init', 'enable_errors');
function enable_errors(){
    if( $GLOBALS['user_level'] < 5 )
        return;
    error_reporting(E_ALL ^ E_NOTICE);
    ini_set("display_errors", 1);
}

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

Share on Pinterest
Share with your friends










Отправить
6
Всего


Похожие записи

Комментарии к “Настройка админки WordPress для клиента”
  1. DolininS 06.10.2016
  2. NetStar 06.10.2016
  3. Mvuser 06.10.2016
  4. Guzelka 06.10.2016
  5. Garri 06.10.2016
  6. Celana 06.10.2016

Напишите ответ