Как в WordPress запретить пользователю менять тему

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

Для решения вопроса мне пришлось использовать три функции-крючка - admin_init, admin_menu и wp_before_admin_bar_render. Смотрим листинг:

<?php

// Запрещаем доступ к смене темы по прямой ссылке wp-admin/themes.php:
function nelza_menyat_temy() {
    if (stripos($_SERVER['PHP_SELF'], '/wp-admin/themes.php')) :
        wp_redirect(admin_url());
        exit;
    endif;
}

add_action('admin_init', 'nelza_menyat_temy', 999);

// Удаляем пункт меню Темы из меню админки:
function nelza_otkrivat_stranicy_temi() {
    remove_submenu_page('themes.php', 'themes.php');
}

add_action('admin_menu', 'nelza_otkrivat_stranicy_temi', 999);

// Удаляем пункт меню Темы из верхней панели при просмотре сайта:
function udlit_temi_iz_admin_bara() {
    global $wp_admin_bar;
    $wp_admin_bar->remove_menu('themes');
}

add_action('wp_before_admin_bar_render', 'udlit_temi_iz_admin_bara', 999);
?>

Код добавьте в тему, отредактируйте functions.php. Ещё раз подчеркну, что пользователь даже при попытке перехода по прямому адресу веб-страницы для смены темы (к примеру по http://wordpress-site.ru/wp-admin/themes.php) не сможет ничего изменить.





© 2012-2014 Druweb.ru. Вы можете спокойно копировать любые материалы сайта только при наличии обратной ссылки.