【发布时间】:2018-01-25 21:18:57
【问题描述】:
我有以下从 WordPress 法典中获取的关于如何保存简单文本输入字段的代码。它工作正常。但我现在正在尝试保存一个选择选项下拉列表,但无法弄清楚我在这里缺少什么。它似乎在我第一次从下拉菜单中点击保存时保存,但是当我尝试编辑值以选择另一个选项并保存它时,它永远不会保存。
我的另一个问题是为什么我运行时没有将值打印到屏幕上
testing value saved: <?=esc_attr( get_option('location_one_option') ); ?>
当前插件代码如下:
// 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 }
【问题讨论】: