2017-02-21 35 views
1

Я использую следующий код, чтобы определить, был ли отмечен флажок, а затем отобразить текст, если он имеет/не имеет значения в качестве теста.Wordpress Недопустимое смещение строки

Когда он проверен, он отлично работает и отображается текст.

Когда его непроверено, я получаю сообщение ниже в строке ввода с комментарием в моем коде ниже.

Нелегальная строка смещения 'chec_checkbox_field_0'

<?php 

    function webdev_init() { 
    ?> 
     <h1>Title</h1> 
     <h2>WedDev Overlay Plugin Options</h2> 
     <form action='options.php' method='post'> 
     <h2>Checking</h2> 

     <?php 
     settings_fields('my_option'); 
     do_settings_sections('checking'); 
     submit_button(); 
     ?> 

     </form> 
    <?php 
    } 

    function chec_settings_init() { 

     register_setting('my_option', 'chec_settings'); 

     add_settings_section(
      'chec_checking_section', 
      __('Your section description', 'wp'), 
      'chec_settings_section_callback', 
      'checking' 
     ); 

     add_settings_field(
      'chec_checkbox_field_0', 
      __('Settings field description', 'wp'), 
      'chec_checkbox_field_0_render', 
      'checking', 
      'chec_checking_section' 
     ); 
    } 

    function chec_settings_section_callback() { 

     echo __('This section description', 'wp'); 

    } 

    function chec_checkbox_field_0_render() { 

     $options = get_option('chec_settings'); 
    ?> 

    //Error message on line bellow 
    <input type='checkbox' name='chec_settings[chec_checkbox_field_0]' value='1' <?php if (1 == $options['chec_checkbox_field_0']) echo 'checked="checked"'; ?> /> 

    <?php 
    } 

$options = get_option('chec_settings'); 
if (is_array($options) && $options['chec_checkbox_field_0'] == '1') { 
    echo 'Checked'; 
} else { 
    echo 'Unchecked'; 
} 

ответ

0

Это означает, что данный показатель не присутствует в массиве $options.

Кажется, что вы получаете значение $ options из HTTP-запроса. Поскольку ваш ввод является флажком, он отсутствует в запросе при снятии флажка.

Потому что в случае формы html флажок просто отсутствует в запросе после отправки, если он не установлен.

Это означает, что флажок имеет только два состояния, заданные или не заданные. Итак, вы должны проверить на isset(), чтобы определить, установлен ли флажок.

if (isset($options['chec_checkbox_field_0']) && $options['chec_checkbox_field_0'] == '1') { 
    echo 'Checked'; 
} else { 
    echo 'Unchecked'; 
} 
+0

Хорошо. где я могу проверить isset()? – Jason

+0

Я добавил. Пожалуйста, проверьте. –

+0

no он все еще показывает предупреждение – Jason