Ошибка обновления обновления: Примечание: Неопределенный индекс

Я создал плагин WordPress и добавил страницу параметров.

Если флажок снят, появляется сообщение об ошибке:

Notice: Undefined index: upo_enable 

Но когда флажок установлен, он работает хорошо. См. GIF ниже:

моя страница настроек плагина

Демо-код:

 <?php /* Plugin Name: update option Plugin URI: Description: Plugin Demo. Author: Ryan Version: 1.0 Author URI: */ if ( !function_exists('upo_admin_page') ) : function upo_admin_page() { add_options_page( __( 'Update Option', 'demo' ), __( 'Update Option', 'demo' ), 'manage_options', 'update-option', 'upo_option_page' ); } endif; add_action( 'admin_menu', 'upo_admin_page' ); // Update Options. if ( !function_exists('upo_options_update') ) : function upo_options_update() { $updated = '<div class="updated settings-error notice is-dismissible"><p><strong>' . __('Settings saved.', 'demo') . '</strong></p></div>'; if (isset($_POST['update_options'])) { update_option('upo_enable', $_POST['upo_enable']); echo $updated; } } endif; if ( !function_exists('upo_option_page') ) : function upo_option_page() { ?> <div class="upo-wrap"> <h2><?php _e('Update Options') ?></h2> <?php upo_options_update(); ?> <div class="update-option"> <form method="post" action="<?php echo admin_url( 'options-general.php?page=update-option' ); ?>"> <?php wp_nonce_field('update_options');?> <table class="upo-options-form"> <tr valign="top"> <th scope="row"><?php _e('Enable'); ?></th> <td><label for="upo_enable"> <input name="upo_enable" type="checkbox" id="upo_enable" value="true" <?php checked('true', get_option('upo_enable')); ?> /><?php _e('Test Text'); ?></label> </td> </tr> </table> <p class="upo-submit"> <input type="submit" name="update_options" class="button-primary" value="<?php _e('Save Changes','demo'); ?>" /> </p> </form> </div> </div> <?php } endif; 

Итак, как я могу это исправить?

Благодаря!

Solutions Collecting From Web of "Ошибка обновления обновления: Примечание: Неопределенный индекс"

Это связано с тем, что если флажок не установлен, он не отправляется на сервер. Вот почему в массиве POST нет индекса upo_enable .

Однако вы можете проверить, пусто или нет значение:

$upo_enable = !empty($_POST['upo_enable']) ? true : false;

Или

$upo_enable = !empty($_POST['upo_enable']) ? $_POST['upo_enable'] : false;

Подробнее об этом: https://www.w3.org/TR/html401/interact/forms.html

флажки

Флажки (и переключатели) – это переключатели вкл / выкл, которые пользователь может переключать. При включенном атрибуте элемента управления установлен переключатель «включено». Когда форма отправляется, могут быть успешными только контрольные элементы «on».