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