So speichern Sie ein Dropdown-Menü mit ausgewählten Optionen in einem WordPress-Plugin

Lesezeit: 6 Minuten

Zach Smiths Benutzeravatar
Zach Smith

Ich habe den folgenden Code, der dem WordPress-Codex entnommen ist und zeigt, wie man ein einfaches Texteingabefeld speichert. es funktioniert gut. Aber ich versuche jetzt, ein Dropdown-Menü mit ausgewählten Optionen zu speichern und kann nicht herausfinden, was mir hier fehlt. Anscheinend wird gespeichert, wenn ich zum ersten Mal im Dropdown-Menü auf „Speichern“ klicke, aber wenn ich versuche, den Wert zu bearbeiten, um eine andere Option auszuwählen und zu speichern, wird nie gespeichert.

Meine andere Frage ist, warum der Wert beim Ausführen nicht auf dem Bildschirm angezeigt wird

testing value saved: <?=esc_attr( get_option('location_one_option') ); ?>

Der aktuelle Plugin-Code ist unten:

// create custom plugin settings menu
function sidebar_posts_create_menu() {
    //create new top-level menu
    add_menu_page('Sidebar Posts', 'Sidebar Post Settings', 'administrator', __FILE__, 'sidebar_posts_settings_page' );

    //call register settings function
    add_action( 'admin_init', 'register_sidebar_posts_settings' );
}
add_action('admin_menu', 'sidebar_posts_create_menu');

//register our settings
function register_sidebar_posts_settings() {
    //register our settings
    register_setting( 'sidebar-posts-settings-group', 'location_one_option' );
    register_setting( 'sidebar-posts-settings-group', 'new_option_name' );
}

//register settings page view
function sidebar_posts_settings_page() {
    ?>
    <div class="wrap">
        <h1>Sidebar Posts Settings</h1>
        <p>Select up to six posts to show in six different locations on the sidebar. Have fun!</p>

        <form method="post" action="options.php">
            <?php settings_fields( 'sidebar-posts-settings-group' ); ?>
            <?php do_settings_sections( 'sidebar-posts-settings-group' ); ?>
            <table class="form-table">
                <tr valign="top">
                    <th scope="row">New Option Name</th>
                    <td><input type="text" name="new_option_name" value="<?php echo esc_attr( get_option('new_option_name') ); ?>" /></td>
                </tr>
<!--the above simple text field saves the data perfectly-->

                <?php
                $your_query = new WP_Query( 'posts_per_page=-1' ); ?>
                                <label>Location One Post</label><br />
            <select name="location_one_option">
                <option value="" selected="selected">Select a post</option>
                <?php while ( $your_query->have_posts() ) : $your_query->the_post(); ?>
                <option value="<?=esc_attr( get_option('location_one_option') ); ?>" <?php selected( get_option('location_one_option'), get_option('location_one_option') ); ?>>
                    <?=the_title(); ?>
                </option>
                <? endwhile; ?>
            </select>
            <? wp_reset_postdata(); ?><br /><br />
            testing value saved: <?=esc_attr( get_option('location_one_option') ); ?>

            </table>
            <?php submit_button(); ?>
        </form>
    </div>
<?php }

Verwenden Sie diese Funktion. Dies ist nur ein Beispiel, um ein Dropdown-Menü mit ausgewählten Optionen in einem WordPress-Plugin zu speichern. Sie können es je nach Bedarf verwenden.

Beispiel 1

class DropdownOptionSetting {
    private $dropdown_option_setting_options;

    public function __construct() {
        add_action( 'admin_menu', array( $this, 'dropdown_option_setting_add_plugin_page' ) );
        add_action( 'admin_init', array( $this, 'dropdown_option_setting_page_init' ) );
    }

    public function dropdown_option_setting_add_plugin_page() {
        add_options_page(
            'Dropdown Option Setting', // page_title
            'Dropdown Option Setting', // menu_title
            'manage_options', // capability
            'dropdown-option-setting', // menu_slug
            array( $this, 'dropdown_option_setting_create_admin_page' ) // function
        );
    }

    public function dropdown_option_setting_create_admin_page() {
        $this->dropdown_option_setting_options = get_option( 'dropdown_option_setting_option_name' ); ?>

        <div class="wrap">
            <h2>Dropdown Option Setting</h2>
            <p></p>
            <?php settings_errors(); ?>

            <form method="post" action="options.php">
                <?php
                    settings_fields( 'dropdown_option_setting_option_group' );
                    do_settings_sections( 'dropdown-option-setting-admin' );
                    submit_button();
                ?>
            </form>
        </div>
    <?php }

    public function dropdown_option_setting_page_init() {
        register_setting(
            'dropdown_option_setting_option_group', // option_group
            'dropdown_option_setting_option_name', // option_name
            array( $this, 'dropdown_option_setting_sanitize' ) // sanitize_callback
        );

        add_settings_section(
            'dropdown_option_setting_setting_section', // id
            'Settings', // title
            array( $this, 'dropdown_option_setting_section_info' ), // callback
            'dropdown-option-setting-admin' // page
        );

        add_settings_field(
            'dropdown_option_0', // id
            'Dropdown Option', // title
            array( $this, 'dropdown_option_0_callback' ), // callback
            'dropdown-option-setting-admin', // page
            'dropdown_option_setting_setting_section' // section
        );
    }

    public function dropdown_option_setting_sanitize($input) {
        $sanitary_values = array();
        if ( isset( $input['dropdown_option_0'] ) ) {
            $sanitary_values['dropdown_option_0'] = $input['dropdown_option_0'];
        }

        return $sanitary_values;
    }

    public function dropdown_option_setting_section_info() {

    }

    public function dropdown_option_0_callback() {
        ?> <select name="dropdown_option_setting_option_name[dropdown_option_0]" id="dropdown_option_0">
            <?php $selected = (isset( $this->dropdown_option_setting_options['dropdown_option_0'] ) && $this->dropdown_option_setting_options['dropdown_option_0'] === 'option-one') ? 'selected' : '' ; ?>
            <option value="option-one" <?php echo $selected; ?>>Option One</option>
            <?php $selected = (isset( $this->dropdown_option_setting_options['dropdown_option_0'] ) && $this->dropdown_option_setting_options['dropdown_option_0'] === 'option-two') ? 'selected' : '' ; ?>
            <option value="option-two" <?php echo $selected; ?>>Option Two</option>
            <?php $selected = (isset( $this->dropdown_option_setting_options['dropdown_option_0'] ) && $this->dropdown_option_setting_options['dropdown_option_0'] === 'option-three') ? 'selected' : '' ; ?>
            <option value="option-three" <?php echo $selected; ?>>Option Three</option>
        </select> <?php
    }

}
if ( is_admin() )
    $dropdown_option_setting = new DropdownOptionSetting();

Rufen Sie diesen Wert ab

$dropdown_option = get_option( 'dropdown_option_setting_option_name' ); // Array
$dropdown_value =  $dropdown_option ['dropdown_option_0']; // Option value

Wenn Sie eine einfache Möglichkeit benötigen, dies zu tun

Beispiel 2

add_action( 'admin_init', 'Dropdown_settings_init' );

function Dropdown_settings_init(  ) { 
    register_setting( 'pluginPage', 'dropdown_settings' );
    add_settings_section(
        'Dropdown_pluginPage_section', 
        __( 'Your section description', 'dropdown' ), 
        'Dropdown_settings_section_callback', 
        'pluginPage'
    );

    add_settings_field( 
        'select_field_0', 
        __( 'Settings field description', 'dropdown' ), 
        'Dropdown_select_field_render', 
        'pluginPage', 
        'Dropdown_pluginPage_section' 
    );
}


function Dropdown_select_field_render(  ) { 
    $options = get_option( 'dropdown_settings' );
    ?>
    <select name="dropdown_settings[select_field_0]">
        <option value="1" <?php selected( $options['select_field_0'], 1 ); ?>>Option 1</option>
        <option value="2" <?php selected( $options['select_field_0'], 2 ); ?>>Option 2</option>
        <option value="3" <?php selected( $options['select_field_0'], 3 ); ?>>Option 3</option>
        <option value="4" <?php selected( $options['select_field_0'], 4 ); ?>>Option 4</option>
    </select>
<?php
}


function Dropdown_settings_section_callback(  ) { 
    echo __( 'This section description', 'dropdown' );
}


function Dropdown_options_page(  ) { 
    ?>
    <form action='options.php' method='post'>
        <h2>Dropdown</h2>
        <?php
        settings_fields( 'pluginPage' );
        do_settings_sections( 'pluginPage' );
        submit_button();
        ?>
    </form>
    <?php
}
?>

1450770cookie-checkSo speichern Sie ein Dropdown-Menü mit ausgewählten Optionen in einem WordPress-Plugin

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy