it-swarm.com.de

Erstellen einer Einstellungsseite mit Dropdown-Listen für das Plugin

Ich richte die Einstellungsseite meines Plugins ein und kann die gewünschten Felder auf der Seite abrufen, möchte aber, dass sie als Dropdown-Felder und nicht als Textfelder angezeigt werden. Ich habe im Web keine nützlichen Informationen dazu gefunden als mit add_settings_field. Mit add_settings_field kann ich eine Dropdown-Liste für meine Einstellung anzeigen, aber ich kann nicht dafür sorgen, dass sie auf meiner Plugin-Einstellungsseite angezeigt wird. Ich kann sie jedoch beispielsweise auf der Seite "Leseeinstellungen" anzeigen.

im grunde habe ich benutzt

add_options_page (), so dass meine Seite Plugin-Optionen unter dem Einstellungsmenü im WordPress-Backend angezeigt wird, und addaction (), um meine Einstellungen zu registrieren, und das Formular wird mit der Rückruffunktion von add_options_page erstellt. Das alles funktioniert, ich bekomme nur Textfelder ... und ich möchte Dropdowns und wahrscheinlich Kontrollkästchen.

Ich hoffe das ergibt Sinn.

Vielen Dank!

4
Jack

Es hört sich so an, als hätten Sie einige Ihrer Settings-API-Aufrufe falsch. Ihre Dropdown-Eingabe wird im Rückruf Ihres add_settings_field () erstellt. Jedem Einstellungsfeld muss mitgeteilt werden, zu welchem ​​Einstellungsabschnitt es gehört. Anschließend teilt Ihre Optionsseite mit, welche Einstellungsabschnitte sie mit der Funktion do_settings () anzeigen muss. Hier ist ein kurzes Codebeispiel mit einem Kontrollkästchen (einige der Rückruffunktionen werden weggelassen, aber ALLE Ihre Rückrufe müssen gültige Funktionen sein - auch wenn Sie sie zu leeren Funktionen machen):

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