我创建了一个WordPress选项页面,在该页面上我想要一个选择框,我可以在其中从我的网站中选择一个页面。以下选项代码完美地完成了!我选择一个页面,点击保存按钮,它会存储正确的值。
我的问题是,当我保存页面(或刷新它)时,选择框不会显示所选和存储的值,而是列表中的第一个。如何使复选框显示存储的值?
<?php break; case 'select_pages': ?>
<div class="options_input">
<label class="option_title" for="<?php echo $option_name.'['.$valueid.']'; ?>"><?php echo $value['name']; ?></label><br>
<select name="<?php echo $option_name.'['.$valueid.']'; ?>" id="<?php echo $option_name.'['.$valueid.']'; ?>">
<option value=""><?php echo esc_attr( __( '— Select —' ) ); ?></option>
<?php
$page_selected = $options[$valueid];
$pages = get_pages();
foreach ( $pages as $page) :
?>
<option value="<?php echo $page->post_title; ?>" <?php if ( $page_selected && in_array( $page->post_title, $page_selected ) ) { echo 'selected="selected"'; }?>><?php echo $page->post_title; ?></option>
<?php endforeach; ?>
</select>
<?php $cc_responsive_theme_options = get_option('cc_responsive_theme_options'); echo $cc_responsive_theme_options['footer_link_1']; ?>
<span class="option_desc"><?php echo $value['desc']; ?></span>
</div>
答案 0 :(得分:0)
无意中找到了解决方案。该复选框设置为多个,它没有将存储的值与选择框中的值进行比较。
这一行:
<option value="<?php echo $page->post_title; ?>" <?php if ( $page_selected && in_array( $page->post_title, $page_selected ) ) { echo 'selected="selected"'; }?>><?php echo $page->post_title; ?></option>
必须更改为:
<option value="<?php echo $page->post_title; ?>" <?php if( $page_selected == $page->post_title) { echo 'selected="selected"'; }?>><?php echo $page->post_title; ?></option>