Функция disabled()
в WordPress используется для динамического добавления атрибута disabled
к элементам формы. Она принимает два значения для сравнения и, если они совпадают, добавляет атрибут disabled="disabled"
к HTML-элементу, что блокирует его для редактирования. Это полезно, когда доступ к полю должен быть ограничен на основе условий.
disabled( $disabled, $current, $display );
disabled()
— это одна из нескольких вспомогательных функций для работы с формами в WordPress, наряду с checked()
, selected()
и wp_readonly()
. Она выводит или возвращает строку disabled="disabled"
, если два переданных значения совпадают. Поле с таким атрибутом становится недоступным для ввода, и его значение не отправляется на сервер.
Параметры:
$disabled
(mixed) — Первое значение для сравнения. Если оно совпадает со вторым значением, элемент блокируется.$current
(mixed) — Второе значение для сравнения (по умолчаниюtrue
).$display
(bool) — Указывает, выводить ли результат сразу (true
) или вернуть в виде строки (false
).
Пример 1: Блокировка текстового поля на основе условий
Предположим, что у нас есть текстовое поле, которое должно быть заблокировано, если переменная $disable_text
установлена в true
.
<?php $disable_text = true; ?>
<input type="text" name="sample_text_field" <?php disabled( $disable_text, true ); ?> value="Невозможно редактировать"/>
Результат: Текстовое поле будет отображаться заблокированным, и его невозможно будет изменить, если $disable_text
равно true
.
Пример 2: Блокировка радиокнопки на основе выбранного значения
В этом примере предполагается, что значение опции в форме равно blue
. Функция disabled()
блокирует радиокнопку с этим значением, делая её недоступной для выбора.
<input type="radio" name="color" value="red" <?php disabled( $_POST['color'], 'red' ); ?>> Красный<br>
<input type="radio" name="color" value="green" <?php disabled( $_POST['color'], 'green' ); ?>> Зеленый<br>
<input type="radio" name="color" value="blue" <?php disabled( $_POST['color'], 'blue' ); ?>> Синий
Результат: Если значение в $_POST['color']
— blue
, то радиокнопка для синего цвета будет заблокирована и недоступна для выбора.
Пример 3: Блокировка выпадающего списка на основе пользовательского уровня
В следующем примере поле выбора блокируется для всех пользователей, кроме администратора:
<select name="user_role" <?php disabled( !current_user_can( 'manage_options' ) ); ?>>
<option value="subscriber">Подписчик</option>
<option value="editor">Редактор</option>
<option value="admin">Администратор</option>
</select>
Результат: Выпадающий список будет заблокирован для пользователей, не имеющих права manage_options
, что позволяет только администраторам выбирать роль пользователя.
Пример 4: Блокировка чекбокса на основе статуса заказа
Допустим, у нас есть чекбокс для отметки выполнения заказа. Если заказ уже выполнен, поле должно быть недоступным для изменения.
<?php $order_completed = true; ?>
<input type="checkbox" name="order_status" <?php disabled( $order_completed, true ); ?> /> Заказ выполнен
Результат: Если $order_completed
равно true
, чекбокс будет заблокирован, чтобы предотвратить его изменение.
Заключение
Функция disabled()
— простой и удобный инструмент для управления доступностью полей форм на основе различных условий в WordPress. Благодаря этой функции можно легко добавлять атрибут disabled
к элементам форм и блокировать их в зависимости от логики кода, что делает интерфейс более управляемым и безопасным.