web-dev-qa-db-fra.com

Création d'une page de paramètres avec des listes déroulantes pour le plug-in

Je suis en train de configurer la page de paramètres de mon plugin et je peux obtenir les champs que je veux sur la page, mais je veux que ce soit des menus déroulants et non des zones de texte ... Je n'ai trouvé aucune information utile sur le Web sur la façon de procéder. que d'utiliser add_settings_field. Avec add_settings_field, je peux afficher un menu déroulant pour mon paramètre, mais je ne parviens pas à le faire apparaître sur la page des paramètres de mon plug-in, mais je peux également le faire apparaître sur la "page des paramètres de lecture" par exemple.

fondamentalement j'ai utilisé

add_options_page () afin que ma page Options de plug-in apparaisse dans le menu des paramètres du backend wordpress, et addaction () pour enregistrer mes paramètres, et que le formulaire soit construit avec la fonction de rappel de add_options_page. Tout cela fonctionne, je ne peux obtenir que des zones de texte ... et j'aimerais des listes déroulantes et probablement des cases à cocher.

J'espère que cela à du sens.

Merci!

4
Jack

Il semble que certains de vos appels à l'API Settings soient incorrects. Votre entrée de liste déroulante est créée dans le rappel de votre add_settings_field (). Chaque zone de paramètres doit indiquer à quelle section de paramètres elle fait partie, puis votre page d'options communique les sections de paramètres à afficher par le biais de la fonction do_settings (). Voici un exemple de code abrégé utilisant une case à cocher (en omettant quelques-unes des fonctions de rappel, mais TOUS vos rappels doivent être des fonctions valides, même si vous les rendez vides):

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
}
?>
3
Chiubaka