Criando Página de Configurações com dropdowns para o Plugin

4

Estou configurando a página de configurações do meu plug-in e posso obter os campos desejados na página, mas quero que eles sejam suspensos, não caixas de texto ... Não encontrei nenhuma informação útil na Web sobre como faça isso diferente de usar add_settings_field. Com add_settings_field eu posso exibir um menu suspenso para a minha configuração, mas eu não posso fazê-lo aparecer na minha página de configurações do plugin, eu posso fazê-lo aparecer na 'página de configurações de leitura', por exemplo.

basicamente eu usei

add_options_page () para que minha página de Opções de Plugin apareça no menu de configurações no backend wordpress, e addaction () para registrar minhas configurações, e o formulário é construído com a função callback de add_options_page. Isso tudo funciona, eu simplesmente não consigo receber nada além de caixas de texto ... e eu gostaria de dropdowns e provavelmente caixas de seleção.

Espero que isso faça sentido.

Obrigado!

    
por Jack 17.08.2011 / 15:25

1 resposta

3

Parece que você tem algumas das suas chamadas da API de configurações incorretas. Sua entrada suspensa é criada no retorno de chamada de seu add_settings_field (). Cada campo de configurações precisa ser informado de qual seção de configurações faz parte e, em seguida, sua página de opções comunica quais seções de configurações ele precisa exibir através da função do_settings (). Aqui está um exemplo de código curto usando uma caixa de seleção (omitindo algumas das funções de retorno de chamada, mas todos os seus retornos de chamada precisam ser funções válidas - mesmo se você fizer funções vazias):

function plugin_admin_init()
{
     //Register your plugin's options with the Settings API, this will be important when you write your options page callback, sanitizing callback omitted
     register_setting( 'plugin_options_group', 'plugin_options_name', 'sanitizing_callback' );
     //Add a new settings section, section callback omitted
     add_settings_section( 'section_id', 'Plugin Settings', 'section_callback', 'section_options_page_type' );
     //Add a new settings field
     add_settings_field( 'plugin_checkbox', 'Send automated emails?', 'field_callback', 'section_options_page_type', 'section_id' );
}
add_action('admin_init', 'plugin_admin_init');

function field_callback()
{
     //The key thing that makes it a checkbox or textbox is the input type attribute. The thing that links it to my plugin option is the name I pass it.
     echo "<input id='plugin_checkbox' name='plugin_options_name[plugin_checkbox]' type='checkbox' value='true' />"
}

function setup_menu()
{
     add_menu_page('Page Name', 'Page Name', 'user_capability_level', 'page_slug', 'page_callback');
}
add_action('admin_menu', 'setup_menu');

function page_callback()
{
?>
<div class='wrap'>
     <h2>Page Name</h2>
     <form method='post' action='options.php'>
     <?php
     //Must be same name as the name you registered with register_setting()
     settings_fields('plugin_options_group');
     //Must match the type of the section you want to display
     do_settings_section('section_options_page_type');
     ?>
          <p class='submit'>
               <input name='submit' type='submit' id='submit' class='button-primary' value='<?php _e("Save Changes") ?>' />
          </p>
     </form>
</div>
<?php
}
?>
    
por Chiubaka 25.08.2011 / 21:14