Функция checked()
в WordPress предназначена для удобного вывода атрибута checked
в HTML-форму, сравнивая два значения и возвращая checked="checked"
, если они идентичны. Это упрощает работу с полями checkbox
и radio
, исключая необходимость проверки значений вручную.
checked( mixed $checked, mixed $current = true, bool $display = true ): string
Параметры:
- $checked — Обязательный параметр, принимает любое значение, которое сравнивается с
$current
. - $current — Необязательный, значение для сравнения (по умолчанию
true
). - $display — Необязательный, определяет, выводить ли атрибут напрямую (
true
) или вернуть его строкой (false
). По умолчанию:true
.
Возвращаемое значение: Строка с атрибутом checked="checked"
, если $checked
и $current
равны, либо пустая строка, если значения различаются.
Принцип работы функции
Функция checked()
приводит оба значения к строковому типу и затем сравнивает их. Это значит, что при сравнении 1
и '1'
функция вернет checked="checked"
, так как оба значения будут считаться равными. Аналогично, true
эквивалентен '1'
, а false
— '0'
.
Пример 1: Базовое использование checked()
Показывает вывод функции в зависимости от значений:
checked(1); // checked='checked'
checked(0); // (пустая строка)
checked('1'); // checked='checked'
checked('0'); // (пустая строка)
checked(true); // checked='checked'
checked(false); // (пустая строка)
checked(false, false); // checked='checked'
checked(1, '1'); // checked='checked'
checked(true, 'str'); // (пустая строка)
checked('test'); // (пустая строка)
checked(array(true)); // (пустая строка)
Пример 2: Использование checked()
в HTML-коде
Добавление checked
атрибута в зависимости от значения из базы данных:
<?php
// Получаем массив опций
$options = get_option('example_option');
// Проверяем значение
$checked_value = $options['autostart'];
?>
<input type="checkbox" name="example_option[autostart]" value="1" <?php checked($checked_value, 1); ?>/>
Пример 3: Сравнение использования if
и checked()
При проверке значения в поле формы есть два подхода: с использованием if
и с помощью checked()
.
С if
:
<input type="checkbox" name="config[enable]" value="1" <?php if ($options['enable'] == 1) echo 'checked="checked"'; ?> />
С использованием checked()
:
<input type="checkbox" name="config[enable]" value="1" <?php checked($options['enable'], 1); ?> />
Этот пример с checked()
экономит время, исключает потенциальные ошибки, и упрощает читаемость кода.
Пример 4: Множественный выбор с массивом значений
Для множественного выбора checkbox
можно использовать массив и checked()
:
<?php
// Получаем мета-данные записи
$selected_items = get_post_meta($post->ID, 'selected_items', true);
?>
<input type="checkbox" name="selected_items[]" value="1" <?php checked(in_array(1, (array)$selected_items), true); ?> />
<input type="checkbox" name="selected_items[]" value="2" <?php checked(in_array(2, (array)$selected_items), true); ?> />
<input type="checkbox" name="selected_items[]" value="3" <?php checked(in_array(3, (array)$selected_items), true); ?> />
Важные заметки
- Если значение чекбокса не установлено в базе, проверка может вернуть пустое значение, что будет трактоваться как
unchecked
. Рекомендуется всегда проверять, установлен ли параметр.
$options = get_option('custom_settings');
if (!isset($options['custom_option'])) {
$options['custom_option'] = 0;
}
Заключение
Функция checked()
— это мощный инструмент WordPress, который позволяет упростить работу с полями формы. С ней кода становится меньше, а его читаемость повышается.