2017-02-21 10 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に存在しないことを意味します。

HTTPリクエストから$ optionsの値を取得しているようです。あなたの入力がチェックボックスであるため、チェックされていないときはリクエストには表示されません。

htmlフォームの場合、チェックボックスはチェックボックスをオフにすると、送信後に要求に単純に欠落するためです。

チェックボックスには、2つの状態のみが設定されているか、設定されていないことを意味します。したがって、isset()をチェックして、チェックボックスがオンになっているかどうかを確認する必要があります。

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

いいえ。どこでisset()をチェックするのですか? – Jason

+0

を追加しました。チェックしてください。 –

+0

いいえまだ警告が表示されています – Jason

関連する問題