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