web-dev-qa-db-ja.com

設定API - チェックボックスをオフにしたときの未定義のインデックス

私はこれが重複しているかもしれないことを知っていますが、私は以前の質問を理解することができませんでした。

設定ページにチェックボックスがあります。チェックボックスをオンにしてすべてを保存すれば、ページの最初の読み込みですべて問題ありません。チェックを外すと、次のようなエラーメッセージが表示されます。

Notice :未定義のインデックス:49行目のdat_checkbox_field_0内の.../wp-content/plugins/divi-auto-testimonials/admin/dat-options.phpvalue = '1'>

関数:

function dat_checkbox_field_0_render(  ) { 

    $options = get_option( 'dat_settings' );
    ?>
    <input type='checkbox' name='dat_settings[dat_checkbox_field_0]' <?php checked( $options['dat_checkbox_field_0'], 1 ); ?> value='1'>
    <?php

}

行49は入力HTMLです。

このコードでも同じエラーが発生します。

$options = get_option( 'dat_settings' );
if( $options['dat_checkbox_field_0'] != '1' ) {
 include_once "admin/notification.php";
}

私が理解していることから、値をnullに設定する必要があると思いますが、それが正しいかどうか、また正しいかどうかは完全にはわかりません。

2
Ben H

次のようにしてこれを修正できました。

function dat_checkbox_field_0_render(  ) { 

    $options = get_option( 'dat_settings' );
    $a = $options;
if (array_key_exists("dat_checkbox_field_0",$a))
  { } else { 
    $options['data_checkbox_field_0'] = false;
  }
    ?>
      <input type='checkbox' name='dat_settings[dat_checkbox_field_0]' <?php checked( $options['dat_checkbox_field_0'], 1 ); ?> value='1'>
    <?php

}
1
Ben H
$options = get_option( 'dat_settings' );
$options['dat_checkbox_field_0'] = empty( $options['dat_checkbox_field_0'] ) ? 0 : 1;

基本的に、変数が "空"の場合、つまり変数が設定されていない場合、またはfalseに等しい(0で修飾されている)場合は、0の値が割り当てられます。それから1の値が割り当てられます。

あるいは、同じ結果を得るために論理を逆にします(3項ステートメントで最初に来るのが真実の純粋主義者の場合)。

$options['dat_checkbox_field_0'] = !empty( $options['dat_checkbox_field_0'] ) ? 1 : 0;
2
Otto