Хук customize_loaded_components
позволяет разработчикам изменять список базовых компонентов, загружаемых в Кастомайзер WordPress. С помощью этого фильтра можно исключить определённые панели, такие как «Меню» или «Виджеты», чтобы они не отображались в интерфейсе настройки.
apply_filters( ‘customize_loaded_components’, string[] $components, WP_Customize_Manager $manager )
Этот фильтр предоставляет возможность изменять компоненты Кастомайзера, исключая ненужные панели из массива загружаемых элементов. Использование фильтра customize_loaded_components
позволяет улучшить интерфейс Кастомайзера для пользователей, удаляя секции, которые могут не требоваться в конкретной теме или проекте.
Важно: Этот фильтр выполняется в момент
plugins_loaded
, поэтому его необходимо использовать в плагине. Он не будет работать, если его разместить в файлеfunctions.php
темы.
Применение
Для использования этого фильтра добавьте следующий код в ваш плагин:
add_filter( 'customize_loaded_components', 'custom_customize_loaded_components', 10, 2 );
/**
* Функция для фильтра `customize_loaded_components`.
*
* @param string[] $components Массив загружаемых компонентов.
* @param WP_Customize_Manager $manager Экземпляр WP_Customize_Manager.
*
* @return string[] Модифицированный массив компонентов.
*/
function custom_customize_loaded_components( $components, $manager ) {
// Логика для изменения массива компонентов.
return $components;
}
Пример 1: Удаление панели «Меню» из Кастомайзера
В этом примере мы убираем панель «Меню» из списка компонентов Кастомайзера. Это удобно, если ваша тема не требует настройки меню через Кастомайзер.
add_filter( 'customize_loaded_components', 'remove_nav_menus_panel' );
function remove_nav_menus_panel( $components ) {
$key = array_search( 'nav_menus', $components );
if ( false !== $key ) {
unset( $components[ $key ] );
}
return $components;
}
Пример 2: Исключение панели «Виджеты»
Чтобы скрыть панель «Виджеты», можно воспользоваться следующим кодом. Он удаляет компонент widgets
из массива.
add_filter( 'customize_loaded_components', 'remove_widgets_panel' );
function remove_widgets_panel( $components ) {
$key = array_search( 'widgets', $components );
if ( false !== $key ) {
unset( $components[ $key ] );
}
return $components;
}
Пример 3: Удаление нескольких компонентов (например, «Меню» и «Виджеты»)
Если требуется удалить несколько компонентов, можно использовать цикл foreach
, чтобы упростить логику исключения.
add_filter( 'customize_loaded_components', 'remove_multiple_components' );
function remove_multiple_components( $components ) {
foreach ( [ 'nav_menus', 'widgets' ] as $component ) {
$key = array_search( $component, $components );
if ( false !== $key ) {
unset( $components[ $key ] );
}
}
return $components;
}
Пример 4: Удаление панели «Фоновые изображения» из Кастомайзера
Этот пример демонстрирует удаление панели background_image
, которая обычно используется для настройки фоновых изображений. Полезно, если фоновые изображения не поддерживаются темой.
add_filter( 'customize_loaded_components', 'remove_background_image_panel' );
function remove_background_image_panel( $components ) {
$key = array_search( 'background_image', $components );
if ( false !== $key ) {
unset( $components[ $key ] );
}
return $components;
}
Пример 5: Полное скрытие Кастомайзера, оставив только базовые компоненты
Если нужно оставить только некоторые базовые панели, можно создать список допустимых компонентов, а затем удалить все остальные.
add_filter( 'customize_loaded_components', 'restrict_customizer_components' );
function restrict_customizer_components( $components ) {
$allowed_components = [ 'site_identity', 'custom_css' ]; // Оставляем только эти компоненты.
return array_intersect( $components, $allowed_components );
}
Когда использовать customize_loaded_components
Использование этого фильтра рекомендуется в следующих случаях:
- Для упрощения интерфейса Кастомайзера: если пользователям не требуются все стандартные панели.
- Для настройки интерфейса под требования проекта: когда конкретные панели, такие как «Меню» или «Виджеты», не нужны в выбранной теме.
- Для улучшения производительности: убирая ненужные компоненты, можно снизить нагрузку на сервер при загрузке Кастомайзера.
Заключение
Хук customize_loaded_components
— полезный инструмент для изменения списка базовых панелей в Кастомайзере. Он помогает адаптировать интерфейс под конкретные требования, улучшая его удобство и оптимизируя работу администраторов сайта.