Функция remove_allowed_options() в WordPress позволяет удалить определенные параметры из списка разрешенных опций. Эта функция полезна для разработчиков, которые хотят ограничить доступ к определенным параметрам или упростить управление опциями на уровне страницы настроек.
remove_allowed_options( array $del_options, string|array $options = '' ): array
Параметры
- $del_options
Тип:array
Обязательный параметр, содержащий ассоциативный массив, в котором ключами являются страницы настроек, а значениями — массивы имен опций для удаления. - $options
Тип:string|array
Необязательный параметр, который может быть строкой или массивом существующих опций, из которых будут удалены указанные опции. По умолчанию использует глобальную переменную$allowed_options.
Возвращаемое значение
Возвращает обновленный массив разрешенных опций без указанных в $del_options.
Пример 1: Удаление одной опции с определенной страницы
Допустим, у нас есть страница настроек general, и мы хотим удалить параметр site_description из разрешенных опций:
$del_options = [
'general' => ['site_description']
];
$updated_options = remove_allowed_options( $del_options );
print_r( $updated_options );
Этот код удаляет опцию site_description с страницы general и возвращает обновленный список разрешенных опций.
Пример 2: Удаление нескольких опций с одной страницы
Предположим, необходимо удалить сразу несколько опций с той же страницы general, например, site_title и timezone_string:
$del_options = [
'general' => ['site_title', 'timezone_string']
];
$updated_options = remove_allowed_options( $del_options );
print_r( $updated_options );
Функция удалит обе опции, обновив массив разрешенных опций для страницы general.
Пример 3: Удаление опций с разных страниц настроек
Функция позволяет удалить опции сразу с нескольких страниц. Например, удалим admin_email с general и permalink_structure с permalink:
$del_options = [
'general' => ['admin_email'],
'permalink' => ['permalink_structure']
];
$updated_options = remove_allowed_options( $del_options );
print_r( $updated_options );
Здесь функция удаляет указанные опции с каждой из заданных страниц.
Пример 4: Передача пользовательского массива опций
Если требуется передать собственный массив опций, отличающийся от глобального $allowed_options, его можно указать в параметре $options. Допустим, у нас есть кастомный массив опций:
$custom_options = [
'general' => ['site_url', 'home'],
'reading' => ['posts_per_page', 'rss_use_excerpt']
];
$del_options = [
'general' => ['site_url']
];
$updated_options = remove_allowed_options( $del_options, $custom_options );
print_r( $updated_options );
В этом случае функция работает с $custom_options, удаляя site_url из раздела general, не изменяя глобальную переменную $allowed_options.
Пример 5: Применение функции для ограничения опций в административной панели
Если нужно скрыть определенные настройки в панели администратора для некоторых ролей пользователей, remove_allowed_options() можно использовать в контексте проверки ролей:
if ( ! current_user_can( 'manage_options' ) ) {
$del_options = [
'general' => ['admin_email', 'timezone_string']
];
remove_allowed_options( $del_options );
}
Здесь функция удаляет доступ к admin_email и timezone_string для пользователей, не обладающих правами manage_options.
Пример 6: Удаление несуществующих опций
Если вы попытаетесь удалить несуществующие опции, функция просто вернет массив без изменений:
$del_options = [
'general' => ['non_existent_option']
];
$updated_options = remove_allowed_options( $del_options );
print_r( $updated_options );
Так как non_existent_option не существует, массив разрешенных опций останется без изменений.
Заключение
Функция remove_allowed_options() в WordPress — это полезный инструмент для ограничения доступных параметров на уровне настроек. Она позволяет гибко управлять списками разрешенных опций для различных страниц и может использоваться в кастомных сценариях администрирования.