Функция 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 — это полезный инструмент для ограничения доступных параметров на уровне настроек. Она позволяет гибко управлять списками разрешенных опций для различных страниц и может использоваться в кастомных сценариях администрирования.