Как исправить неинициализированное смещение строки: ошибка при установке флажка в API настроек WP
Я пытаюсь создать страницу параметров с полем флажка. Флажок работает нормально, но когда я снимаю его и сохраняю настройки, на
отображается строка ошибкиNotice: Uninitialized string offset: 0 in C:\xampp\htdocs\project\wp-content\plugins\test\admin\options.php on line 55
Вот код основных настроек:
register_setting('twb_settings', 'twb_option', '' );
add_settings_section('twb_section', 'General Settings', '', __FILE__);
add_settings_field( 'hide_avatar', 'Hide Avatar', 'hide_vatar_fn', __FILE__, 'twb_section');
function hide_vatar_fn()
{
$options = get_option( 'twb_option' );
echo'<input type="checkbox" id="hide_avatar" name="twb_option[hide_avatar]" value="1" ' . checked(1, $options['hide_avatar'], false) . '/>';
}
Если я добавлю обратный вызов очистки в register_settings
, то ошибка будет заменена на ошибку Undefined Variable
.
Если я отключу режим WP_Debug
, все ошибки исчезнут.
1
1 answers
Скорее всего, ваш $options
является строкой, а не массивом.
Всегда лучше проверять, что параметры $ находятся в формате, который вы ожидаете, особенно во время разработки, когда вы, вероятно, переключите форматы и слишком ленивы, чтобы очистить БД при этом.
Что-то вроде
if (!isset($options['hide_avatar']))
$options['hide_avatar'] = 0;
Возможно, это все равно привело бы к странной ошибке, но было бы немного легче понять, где именно и, возможно, почему.
1
Author: Mark Kaplun, 2015-11-05 10:49:02