title: "Notice: Undefined index" - Wordpress plugin development
body: <p>I'm developing a Wordpress plugin, and have avoided using a setting page, simply because it always causes some kind of error. This time: "Notice: Undefined index". Can anyone spot any obvious mistake that I have done, but can't notice? Thanks!</p>
  
  <p>Here is the faulty code:</p>
  
  <pre><code>&lt;?php
  
  // Block direct access
  if(!defined('ABSPATH'))exit;
  
  
  add_action( 'admin_menu', 'jvc_add_admin_menu' );
  add_action( 'admin_init', 'jvc_settings_init' );
  
  
  function jvc_add_admin_menu(  ) { 
  
      add_options_page( 'jQuery Version Control', 'jQuery Version Control', 'manage_options', 'jquery_version_control', 'jvc_options_page' );
  
  }
  
  
  function jvc_settings_init(  ) { 
  
      register_setting( 'pluginPage', 'jvc_settings' );
  
      add_settings_section(
          'jvc_pluginPage_section', 
          __( 'Your section description', 'jquery-version-control' ), 
          'jvc_settings_section_callback', 
          'pluginPage'
      );
  
      add_settings_field( 
          'jvc_core_version', 
          __( 'Select your desired jQuery version.', 'jquery-version-control' ), 
          'jvc_select_jquery_core_version', 
          'pluginPage', 
          'jvc_pluginPage_section' 
      );
  
          add_settings_field( 
          'jvc_migrate_version', 
          __( 'Select your desired jQuery Migrate version.', 'jquery-version-control' ), 
          'jvc_select_jquery_migrate_version', 
          'pluginPage', 
          'jvc_pluginPage_section' 
      );
  
  
  }
  
  
  function jvc_select_jquery_core_version(  ) { 
  
      $options = get_option( 'jvc_settings' );
    $defaults = array( 'value' =&gt; '3.1.0' );
    $options = wp_parse_args( $options, $defaults );
      ?&gt;
      &lt;select name='select-jquery-core-version'&gt;
          &lt;option value='3.1.0' &lt;?php selected( $options['jvc_core_version'], '3.1.0' ); ?&gt;&gt;jQuery Core 3.1.0&lt;/option&gt;
          &lt;option value='3.0.0' &lt;?php selected( $options['jvc_core_version'], '3.0.0' ); ?&gt;&gt;jQuery Core 3.0.0&lt;/option&gt;
          &lt;option value='2.2.4' &lt;?php selected( $options['jvc_core_version'], '2.2.4' ); ?&gt;&gt;jQuery Core 2.2.4&lt;/option&gt;
          &lt;option value='2.2.3' &lt;?php selected( $options['jvc_core_version'], '2.2.3' ); ?&gt;&gt;jQuery Core 2.2.3&lt;/option&gt;
      &lt;option value='2.2.2' &lt;?php selected( $options['jvc_core_version'], '2.2.2' ); ?&gt;&gt;jQuery Core 2.2.2&lt;/option&gt;
      &lt;option value='2.2.1' &lt;?php selected( $options['jvc_core_version'], '2.2.1' ); ?&gt;&gt;jQuery Core 2.2.1&lt;/option&gt;
      &lt;option value='2.2.0' &lt;?php selected( $options['jvc_core_version'], '2.2.0' ); ?&gt;&gt;jQuery Core 2.2.0&lt;/option&gt;
      &lt;option value='2.1.4' &lt;?php selected( $options['jvc_core_version'], '2.1.4' ); ?&gt;&gt;jQuery Core 2.1.4&lt;/option&gt;
      &lt;option value='2.1.3' &lt;?php selected( $options['jvc_core_version'], '2.1.3' ); ?&gt;&gt;jQuery Core 2.1.3&lt;/option&gt;
      &lt;option value='2.1.2' &lt;?php selected( $options['jvc_core_version'], '2.1.2' ); ?&gt;&gt;jQuery Core 2.1.2&lt;/option&gt;
      &lt;option value='2.1.1' &lt;?php selected( $options['jvc_core_version'], '2.1.2' ); ?&gt;&gt;jQuery Core 2.1.1&lt;/option&gt;
      &lt;option value='2.1.0' &lt;?php selected( $options['jvc_core_version'], '2.1.2' ); ?&gt;&gt;jQuery Core 2.1.0&lt;/option&gt;
      &lt;option value='2.0.3' &lt;?php selected( $options['jvc_core_version'], '2.0.3' ); ?&gt;&gt;jQuery Core 2.0.3&lt;/option&gt;
      &lt;option value='2.0.2' &lt;?php selected( $options['jvc_core_version'], '2.0.2' ); ?&gt;&gt;jQuery Core 2.0.2&lt;/option&gt;
      &lt;option value='2.0.1' &lt;?php selected( $options['jvc_core_version'], '2.0.1' ); ?&gt;&gt;jQuery Core 2.0.1&lt;/option&gt;
      &lt;option value='2.0.0' &lt;?php selected( $options['jvc_core_version'], '2.0.0' ); ?&gt;&gt;jQuery Core 2.0.0&lt;/option&gt;
      &lt;option value='1.12.4' &lt;?php selected( $options['jvc_core_version'], '1.12.4' ); ?&gt;&gt;jQuery Core 1.12.4&lt;/option&gt;
      &lt;option value='1.12.3' &lt;?php selected( $options['jvc_core_version'], '1.12.3' ); ?&gt;&gt;jQuery Core 1.12.3&lt;/option&gt;
      &lt;option value='1.12.2' &lt;?php selected( $options['jvc_core_version'], '1.12.2' ); ?&gt;&gt;jQuery Core 1.12.2&lt;/option&gt;
      &lt;option value='1.12.1' &lt;?php selected( $options['jvc_core_version'], '1.12.1' ); ?&gt;&gt;jQuery Core 1.12.1&lt;/option&gt;
      &lt;option value='1.12.0' &lt;?php selected( $options['jvc_core_version'], '1.12.0' ); ?&gt;&gt;jQuery Core 1.12.0&lt;/option&gt;
      &lt;option value='1.11.3' &lt;?php selected( $options['jvc_core_version'], '1.11.3' ); ?&gt;&gt;jQuery Core 1.11.3&lt;/option&gt;
      &lt;option value='1.11.2' &lt;?php selected( $options['jvc_core_version'], '1.11.2' ); ?&gt;&gt;jQuery Core 1.11.2&lt;/option&gt;
      &lt;option value='1.11.1' &lt;?php selected( $options['jvc_core_version'], '1.11.1' ); ?&gt;&gt;jQuery Core 1.11.1&lt;/option&gt;
      &lt;option value='1.11.0' &lt;?php selected( $options['jvc_core_version'], '1.11.0' ); ?&gt;&gt;jQuery Core 1.11.0&lt;/option&gt;
      &lt;option value='1.10.2' &lt;?php selected( $options['jvc_core_version'], '1.10.2' ); ?&gt;&gt;jQuery Core 1.10.2&lt;/option&gt;
      &lt;option value='1.10.1' &lt;?php selected( $options['jvc_core_version'], '1.10.1' ); ?&gt;&gt;jQuery Core 1.10.1&lt;/option&gt;
      &lt;option value='1.10.0' &lt;?php selected( $options['jvc_core_version'], '1.10.0' ); ?&gt;&gt;jQuery Core 1.10.0&lt;/option&gt;
      &lt;option value='1.9.1' &lt;?php selected( $options['jvc_core_version'], '1.9.1' ); ?&gt;&gt;jQuery Core 1.9.1&lt;/option&gt;
      &lt;option value='1.9.0' &lt;?php selected( $options['jvc_core_version'], '1.9.0' ); ?&gt;&gt;jQuery Core 1.9.0&lt;/option&gt;
      &lt;option value='1.8.3' &lt;?php selected( $options['jvc_core_version'], '1.8.3' ); ?&gt;&gt;jQuery Core 1.8.3&lt;/option&gt;
      &lt;option value='1.8.2' &lt;?php selected( $options['jvc_core_version'], '1.8.2' ); ?&gt;&gt;jQuery Core 1.8.2&lt;/option&gt;
      &lt;option value='1.8.1' &lt;?php selected( $options['jvc_core_version'], '1.8.1' ); ?&gt;&gt;jQuery Core 1.8.1&lt;/option&gt;
      &lt;option value='1.8.0' &lt;?php selected( $options['jvc_core_version'], '1.8.0' ); ?&gt;&gt;jQuery Core 1.8.0&lt;/option&gt;
      &lt;option value='1.7.2' &lt;?php selected( $options['jvc_core_version'], '1.7.2' ); ?&gt;&gt;jQuery Core 1.7.2&lt;/option&gt;
      &lt;option value='1.7.1' &lt;?php selected( $options['jvc_core_version'], '1.7.1' ); ?&gt;&gt;jQuery Core 1.7.1&lt;/option&gt;
      &lt;option value='1.7' &lt;?php selected( $options['jvc_core_version'], '1.7' ); ?&gt;&gt;jQuery Core 1.7.0&lt;/option&gt;
      &lt;option value='1.6.4' &lt;?php selected( $options['jvc_core_version'], '1.6.4' ); ?&gt;&gt;jQuery Core 1.6.4&lt;/option&gt;
      &lt;option value='1.6.3' &lt;?php selected( $options['jvc_core_version'], '1.6.3' ); ?&gt;&gt;jQuery Core 1.6.3&lt;/option&gt;
      &lt;option value='1.6.2' &lt;?php selected( $options['jvc_core_version'], '1.6.2' ); ?&gt;&gt;jQuery Core 1.6.2&lt;/option&gt;
      &lt;option value='1.6.1' &lt;?php selected( $options['jvc_core_version'], '1.6.1' ); ?&gt;&gt;jQuery Core 1.6.1&lt;/option&gt;
      &lt;option value='1.6.0' &lt;?php selected( $options['jvc_core_version'], '1.6.0' ); ?&gt;&gt;jQuery Core 1.6.0&lt;/option&gt;
      &lt;option value='1.5.2' &lt;?php selected( $options['jvc_core_version'], '1.5.2' ); ?&gt;&gt;jQuery Core 1.5.2&lt;/option&gt;
      &lt;option value='1.5.1' &lt;?php selected( $options['jvc_core_version'], '1.5.1' ); ?&gt;&gt;jQuery Core 1.5.1&lt;/option&gt;
      &lt;option value='1.5' &lt;?php selected( $options['jvc_core_version'], '1.5' ); ?&gt;&gt;jQuery Core 1.5.0&lt;/option&gt;
      &lt;option value='1.4.4' &lt;?php selected( $options['jvc_core_version'], '1.4.4' ); ?&gt;&gt;jQuery Core 1.4.4&lt;/option&gt;
      &lt;option value='1.4.3' &lt;?php selected( $options['jvc_core_version'], '1.4.3' ); ?&gt;&gt;jQuery Core 1.4.3&lt;/option&gt;
      &lt;option value='1.4.2' &lt;?php selected( $options['jvc_core_version'], '1.4.2' ); ?&gt;&gt;jQuery Core 1.4.2&lt;/option&gt;
      &lt;option value='1.4.1' &lt;?php selected( $options['jvc_core_version'], '1.4.1' ); ?&gt;&gt;jQuery Core 1.4.1&lt;/option&gt;
      &lt;option value='1.4.0' &lt;?php selected( $options['jvc_core_version'], '1.4.0' ); ?&gt;&gt;jQuery Core 1.4.0&lt;/option&gt;
      &lt;option value='1.3.2' &lt;?php selected( $options['jvc_core_version'], '1.3.2' ); ?&gt;&gt;jQuery Core 1.3.2&lt;/option&gt;
      &lt;option value='1.3.1' &lt;?php selected( $options['jvc_core_version'], '1.3.1' ); ?&gt;&gt;jQuery Core 1.3.1&lt;/option&gt;
      &lt;option value='1.3' &lt;?php selected( $options['jvc_core_version'], '1.3' ); ?&gt;&gt;jQuery Core 1.3.0&lt;/option&gt;
      &lt;option value='1.2.6' &lt;?php selected( $options['jvc_core_version'], '1.2.6' ); ?&gt;&gt;jQuery Core 1.2.6&lt;/option&gt;
      &lt;option value='1.2.5' &lt;?php selected( $options['jvc_core_version'], '1.2.5' ); ?&gt;&gt;jQuery Core 1.2.5&lt;/option&gt;
      &lt;option value='1.2.4' &lt;?php selected( $options['jvc_core_version'], '1.2.4' ); ?&gt;&gt;jQuery Core 1.2.4&lt;/option&gt;
      &lt;option value='1.2.3' &lt;?php selected( $options['jvc_core_version'], '1.2.3' ); ?&gt;&gt;jQuery Core 1.2.3&lt;/option&gt;
      &lt;option value='1.2.2' &lt;?php selected( $options['jvc_core_version'], '1.2.2' ); ?&gt;&gt;jQuery Core 1.2.2&lt;/option&gt;
      &lt;option value='1.2.1' &lt;?php selected( $options['jvc_core_version'], '1.2.1' ); ?&gt;&gt;jQuery Core 1.2.1&lt;/option&gt;
      &lt;option value='1.2' &lt;?php selected( $options['jvc_core_version'], '1.2' ); ?&gt;&gt;jQuery Core 1.2.0&lt;/option&gt;
      &lt;/select&gt;
  
  &lt;?php
  
  }
  
  function jvc_select_jquery_migrate_version(  ) { 
  
      $options = get_option( 'jvc_settings' );
    $defaults = array( 'value' =&gt; '3.0.0' );
    $options = wp_parse_args( $options, $defaults );
      ?&gt;
      &lt;select name='select-jquery-migrate-version'&gt;
          &lt;option value='3.0.0' &lt;?php selected( $options['jvc_migrate_version'], '3.0.0' ); ?&gt;&gt;jQuery Migrate 3.0.0&lt;/option&gt;
          &lt;option value='1.4.1' &lt;?php selected( $options['jvc_migrate_version'], '1.4.1' ); ?&gt;&gt;jQuery Migrate 1.4.1&lt;/option&gt;
          &lt;option value='1.4.0' &lt;?php selected( $options['jvc_migrate_version'], '1.4.0' ); ?&gt;&gt;jQuery Migrate 1.4.0&lt;/option&gt;
      &lt;option value='1.3.0' &lt;?php selected( $options['jvc_migrate_version'], '1.3.0' ); ?&gt;&gt;jQuery Migrate 1.3.0&lt;/option&gt;
      &lt;option value='1.2.1' &lt;?php selected( $options['jvc_migrate_version'], '1.2.1' ); ?&gt;&gt;jQuery Migrate 1.2.1&lt;/option&gt;
      &lt;option value='1.2.0' &lt;?php selected( $options['jvc_migrate_version'], '1.2.0' ); ?&gt;&gt;jQuery Migrate 1.2.0&lt;/option&gt;
      &lt;option value='1.1.1' &lt;?php selected( $options['jvc_migrate_version'], '1.1.1' ); ?&gt;&gt;jQuery Migrate 1.1.1&lt;/option&gt;
      &lt;option value='1.1.0' &lt;?php selected( $options['jvc_migrate_version'], '1.1.0' ); ?&gt;&gt;jQuery Migrate 1.1.0&lt;/option&gt;
      &lt;option value='1.0.0' &lt;?php selected( $options['jvc_migrate_version'], '1.0.0' ); ?&gt;&gt;jQuery Migrate 1.0.0&lt;/option&gt;
      &lt;/select&gt;
  
  &lt;?php
  
  }
  
  
  function jvc_settings_section_callback(  ) { 
  
      echo __( 'The appropriate jQuery Migrate version will load automatically.', 'jquery-version-control' );
  
  }
  
  
  function jvc_options_page(  ) { 
  
      ?&gt;
      &lt;form action='options.php' method='post'&gt;
  
          &lt;h2&gt;&lt;?php _e( 'jQuery Version Control', 'jquery-version-control' );?&gt;&lt;/h2&gt;
  
          &lt;?php
          settings_fields( 'pluginPage' );
          do_settings_sections( 'pluginPage' );
          submit_button();
          ?&gt;
  
      &lt;/form&gt;
      &lt;?php
  
  }
  
  function jvc_jquery_updater() {
  
      // Deregister core jQuery and Jquery Migrate
      wp_deregister_script( 'jquery' );
      wp_deregister_script( 'jquery-migrate' );
  
    // Get options
      $options = get_option( 'jvc_settings' );
  
      // Register new jQuery and jQuery Migrate
      wp_enqueue_script( 'jquery', 'https://code.jquery.com/jquery-' . $options['jvc_core_version'] . '.min.js', false, $options['jvc_core_version'] );
    wp_enqueue_script( 'jquery-migrate', 'https://code.jquery.com/jquery-migrate-' . $options['jvc_migrate_version'] . '.min.js', array( 'jquery' ), $options['jvc_migrate_version'] );
  
  }
  // Front-End
  add_action('wp_enqueue_scripts', 'jvc_jquery_updater');
  </code></pre>