отменить регистрацию боковой панели() в автономной теме не работает


С этим стековым потоком вопросов и ответов Я не могу заставить unregister_sidebar() работать на меня.

Сценарий

Я разработал тему, используя область боковой панели, где я использовал виджет. Но я не хочу, чтобы "Редактор" получал доступ к этой расширенной области боковой панели в области администрирования. Поэтому я хочу внести изменения в мою тему functions.php, где я ранее объявил register_sidebar() где-нибудь, чтобы зарегистрировать боковую панель.

Я понял, что установка меньшего приоритета приведет к отмене регистрации функция более ранняя, поэтому я попробовал с помощью:

function site_unregister_sidebar() {

    if ( is_admin() && current_user_can('editor') ) {
        unregister_sidebar( 'my_custom_widget_area' );
    }
}

add_action('widgets_init', 'site_unregister_sidebar', 1);

Но ничего не происходит.

  • Что на самом деле я делаю не так?
  • Есть ли какой-либо другой способ, которым я могу этого добиться?
Author: Community, 2014-05-12

1 answers

Спасибо Майло и Г.М. за то, что указали на главный ключ, как сказал Г.М.:

вы должны использовать более низкий приоритет, чем один запуск register_sidebar, но более низкий приоритет означает большее число.

Итак, окончательный код, который работает:

function site_unregister_sidebar() {

    if ( is_admin() && current_user_can('editor') ) {
        unregister_sidebar( 'my_custom_widget_area' );
    }
}

add_action('widgets_init', 'site_unregister_sidebar', 20);

Потому что я установил свою боковую панель с приоритетом 10 с помощью того же крючка - widgets_init.

function theme_widgets_init() {

    register_sidebar( array (
        'name' => 'Custom Widget Area',
        'id' => 'my_custom_widget_area'
    ) );
}

add_action( 'widgets_init', 'theme_widgets_init', 10 );
 3
Author: Mayeenul Islam, 2014-05-12 18:46:21