Как исправить неинициализированное смещение строки: ошибка при установке флажка в 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, все ошибки исчезнут.

Author: bakar, 2015-11-04

1 answers

Скорее всего, ваш $options является строкой, а не массивом.

Всегда лучше проверять, что параметры $ находятся в формате, который вы ожидаете, особенно во время разработки, когда вы, вероятно, переключите форматы и слишком ленивы, чтобы очистить БД при этом.

Что-то вроде

if (!isset($options['hide_avatar'])) 
  $options['hide_avatar'] = 0;

Возможно, это все равно привело бы к странной ошибке, но было бы немного легче понять, где именно и, возможно, почему.

 1
Author: Mark Kaplun, 2015-11-05 10:49:02