Как удалить существующую настройку из WordPress Customizer?
Моя тема не использует описание сайта (tagline), как можно удалить его из настройщика тем (customizer)?

Также следует удалить настройку: $wp_customize->remove_setting('blogdescription')

Удаляет ли это также сохраненное значение, которое там сейчас есть? У меня проблема: я хочу удалить существующие настройки/элементы управления, в которых есть данные, но эти данные по-прежнему вызываются. https://wordpress.stackexchange.com/questions/329343/why-is-remove-setting-and-remove-control-not-working

Удаление предустановленных настроек кастомайзера в теме WordPress с помощью этого кода.
add_action( "customize_register", "ruth_sherman_theme_customize_register" );
function ruth_sherman_theme_customize_register( $wp_customize ) {
//=============================================================
// Удаление опции изображения шапки и виджетов из кастомайзера темы
//=============================================================
$wp_customize->remove_control("header_image");
$wp_customize->remove_panel("widgets");
//=============================================================
// Удаление разделов "Цвета", "Фоновое изображение" и "Статическая главная страница"
// из кастомайзера темы
//=============================================================
$wp_customize->remove_section("colors");
$wp_customize->remove_section("background_image");
$wp_customize->remove_section("static_front_page");
}

Я обнаружил, что класс WP_Customize_Manager имеет функцию remove_section()
. В вашей функции, привязанной к customize_register
, вы можете просто сделать:
$wp_customize->remove_section('nav');
$wp_customize->remove_section('static_front_page');
Вы можете найти ID раздела (например, 'nav'), если проверите заголовок аккордеона раздела. Посмотрите на ID содержащего тега <li>
— это часть строки после "customize-section-"
. Например:
<li id="customize-section-static_front_page" class="control-section customize-section">
— здесь ID будет "static_front_page"

Это выглядит лучше, чем моё решение, поэтому я отмечу ваш ответ галочкой — я сам не тестировал, но полагаю, вы это сделали... Не понимаю насчёт title_tagline — разве там не должно быть static_front_page, это опечатка, BAC?

@byronyasgur да, это была ошибка копирования, теперь исправлено. Спасибо!

Согласно OTTO
Последнее, что можно добавить в раздел — это опция "theme_supports". Это скроет меню, если тема не поддерживает определенную функцию. Если вы добавляете этот код в саму тему, то вы уже знаете, что поддерживает тема, поэтому это не имеет особого смысла. Ядро WordPress использует это, чтобы не показывать опции заголовка и фона, если тема их не поддерживает.
Поэтому я объединил это с
$wp_customize->get_setting('blogdescription')->transport='postMessage';
... и обнаружил, что следующий код работает. Я передал false
для theme_supports ... не уверен, что действительно следует передавать ... возможно, кто-то более опытный сможет улучшить это.
$wp_customize->add_control('blogdescription')->theme_supports=false;

Если раздел / панель или элемент управления являются частью ядра, всегда лучше отключить их, а не удалять.
add_action( 'customize_register', 'wp_stackexchange_58932' );
function wp_stackexchange_58932($wp_customize){
$wp_customize->get_section( 'static_front_page' )->active_callback = '__return_false';
$wp_customize->get_section( 'custom_css' )->active_callback = '__return_false';
}

Если вы используете этот код в плагине, вам следует указать аргумент приоритета, например 999, и тогда он будет работать в плагине.
add_action( "customize_register","wpcb_theme_customize_register",999,1);
function wpcb_theme_customize_register($wp_customize){
$wp_customize->get_setting('blogdescription')->transport='postMessage';
}
