在下拉列表中显示已保存的元框数据和选定内容()

时间:2012-07-10 作者:RCNeil

我有一个特定自定义帖子类型的自定义元框,元框中的一个字段是下拉列表。

我正确地提供了字段,保存了信息,甚至正确地调用了它(因此我知道它保存得很好),但是,当您返回编辑帖子或更新时,下拉列表中总是有第一个<select> 选项列表,我担心这会让将来编辑这些帖子类型的人感到困惑。

例如,如果编辑器选择“选项2”,然后单击“发布”或“更新”,则会保存“选项2”,并在循环中调用,但下拉列表会立即再次显示“选项1”。

是否有办法将保存的“选定”选项显示在列表的顶部或顶部,以便编辑器将其显示为已保存?

我的功能代码:

function meta_options(){
    global $post;
    $custom = get_post_custom($post->ID);
    $price = $custom["price"][0];
    $selected = isset( $values[\'location\'] ) ? esc_attr( $values[\'location\'][0] ) :\'\';  
?>
<label>Price:</label><input name="price" value="<?php echo $price; ?>" />
<label>Location : </label>  <br />
<select name="location" id="location">  
    <option value="Option 1" <?php selected( $selected, \'Option 1\' ); ?>>Option 1</option>  
    <option value="Option 2" <?php selected( $selected, \'Option 2\' ); ?>>Option 2</option>  
</select>
<?php } ?>
然后保存该信息:

function save_price(){
    global $post;
    update_post_meta($post->ID, "price", $_POST["price"]);
    update_post_meta( $post->ID, \'location\', esc_attr( $_POST[\'location\'] ));  
}
我这样做对吗?有没有一种简单的方法来实现这一点?

非常感谢。

1 个回复
SO网友:RCNeil

<?php selected() ?> 比较存储数据的值和应该首先显示哪个选项,我的错误是没有存储要与之进行正确比较的变量。

$selected = isset( $values[\'location\'] ) ? esc_attr( $values[\'location\'][0] ) : ”;
应更改为:

$selected = isset( $custom[\'location\'] ) ? esc_attr( $custom[\'location\'][0] ) : ”;
就我而言,这是一个简单的语法错误,因为我错误地引用了变量。一旦更改,函数<?php selected( $selected, \'Option 1\' ); ?> 将比较变量和字符串,然后显示selected="selected" 将该下拉项目置于顶部。

结束

相关推荐

在Functions.php中创建“无文件”页面模板

(所谓“页面模板”,我指的是具有\"Template Name\" header 可在管理页面的“模板”下拉字段中选择。)在多个实例中,我构建了页面模板,可以通过挂接到\\u内容或pre\\u get\\u帖子或类似的内容来完成。这让我想知道是否有一种方法可以在functions.php 或者不创建主题文件本身的插件。我想这样做的原因:在我想到的场景中,我通常只是复制页面。php几乎一字不差。这意味着将来对页面的任何更改。php需要制作两次。随着儿童主题的更新,这更加令人痛苦</我喜欢“模板”字段U