Nova opção de tema personalizado (input de texto) dando erro de índice

Estou usando o arquivo theme-options.php do ThemeShaper: http://themeshaper.com/2010/06/03/sample-theme-options/

Posso adicionar, com sucesso, novas opções de menu suspenso, no entanto, quando adiciono uma nova input de texto, recebo esse erro quando o vejo na área de administração (adicionei THEME_DIRECTORY):


Notice: Undefined index: cpt_sm_dribbble_handle in /[THEME_DIRECTORY]/theme-options.php on line 359

Quando mudo o valor de input para outra coisa e salve-o, ele funciona bem e nunca dá um erro novamente. No entanto, não quero que essa mensagem de erro apareça nos usuários. Prefiro que ele apareça em branco, uma vez que ainda não existe nenhum valor.

Eu suspeito que estou obtendo esse erro porque o database não reconhece essa nova opção. E eu acho que preciso de algum tipo de verificação no meu código para dizer se isso não existe, defina o valor como nulo. Embora eu não tenha certeza se este é realmente o problema e, em caso afirmativo, como corrigi-lo.

Aqui está o código minimizado para o meu arquivo de opções e para uma nova opção de texto (eu notei a linha que está jogando o erro):

 add_action('admin_init', 'cpt_options_init'); add_action('admin_menu', 'theme_options_add_page'); function cpt_options_init() { register_setting('cpt_options', 'cpt_theme_options', 'theme_options_validate'); } function theme_options_add_page() { add_theme_page('Theme Options', 'Theme Options', 'edit_theme_options', 'theme_options', 'theme_options_do_page'); } function theme_options_do_page() { global $sm_select_options; if (!isset($_REQUEST['settings-updated'])) $_REQUEST['settings-updated'] = false; ?> 
Dribbble <input id="cpt_theme_options[cpt_sm_dribbble_handle]" class="regular-text" type="text" name="cpt_theme_options[cpt_sm_dribbble_handle]" value="" /> // THIS IS THE LINE THAT IS THROWING THE ERROR (line 359)
<?php } function theme_options_validate($input) { global $sm_select_options; // Say our text option must be safe text with no HTML tags $input['cpt_sm_dribbble_feed'] = wp_filter_nohtml_kses($input['cpt_sm_dribbble_feed']); return $input; }

Alguma idéia sobre o que estou fazendo de errado?

Obrigado pelo seu tempo.

Solutions Collecting From Web of "Nova opção de tema personalizado (input de texto) dando erro de índice"

Enrole a chamada em um isset() condicional nesta linha:

  

Experimente algo como isto:

 $cpt_sm_dribbble_handle = ( isset( $options['cpt_sm_dribbble_handle']) ? $options['cpt_sm_dribbble_handle']) : '' );  

EDITAR

Nota: sua outra alternativa é configurar as opções padrão no init, de modo que esta opção esteja definida para algum valor padrão, por exemplo, uma string vazia.