在wordpress中保存下拉值

时间:2012-01-24 12:59:28

标签: php wordpress drop-down-menu

所以我试图在我的自定义帖子类型中保存下拉值。我做错了什么?

标记:

<li><label>Location</label><input name="tf_events_location" value="<?php echo $meta_loc; ?>" /></li>
<li><label>Band relation</label>
    <select name="tf_events_relate" id="tf_events_relate">
      <option value="">All Artists </option>
      <option value="146">Mormor</option>
      <option value="140">John Face</option>
     </select>
</li>

并保存

function save_tf_events(){

global $post;

if(!isset($_POST["tf_events_location"])):
    return $post;
    endif;
    $updateloc = $_POST["tf_events_location"];
    update_post_meta($post->ID, "tf_events_location", $updateloc);

if(!isset($_POST["tf_events_relate"])):
    return $post;
    endif;
    $updaterelate = $_POST["tf_events_relate"];
    update_post_meta($post->ID, "tf_events_relate", $updaterelate);
}

我的tf_events_location保存得很好,但我的tf_events_relate没有做任何事情 我想我可能会把原则弄错;)

2 个答案:

答案 0 :(得分:1)

问题是,您只是不告诉<select>元素在页面返回时选择了<option>

有很多不同的方法可以做到这一点,有些方法比其他方式更灵活,但是使用上面的html代码,这是最简单的格式,这样可行:

<li><label>Location</label><input name="tf_events_location" value="<?php echo $meta_loc; ?>" /></li>
<li><label>Band relation</label>
    <select name="tf_events_relate" id="tf_events_relate">
      <option <?php ($meta_relate == "") ? echo("selected "):; ?>value="">All Artists </option>
      <option <?php ($meta_relate == "146") ? echo("selected "):; ?>value="146">Mormor</option>
      <option <?php ($meta_relate == "140") ? echo("selected "):; ?>value="140">John Face</option>
     </select>
</li>

它不是最优雅的,但应该有效。

答案 1 :(得分:0)

cdeszaq的回答将完成工作,但您可以使用selected()

简化它
<li><label>Location</label>
    <input name="tf_events_location" value="<?php echo $meta_loc; ?>" />
</li>
<li><label>Band relation</label>
    <select name="tf_events_relate" id="tf_events_relate">
      <option value="" <?php selected( $meta_relate, '' ); ?>All Artists</option>
      <option value="146" <?php selected( $meta_relate, '146' ); ?>Mormor</option>
      <option value="140" <?php selected( $meta_relate, '140' ); ?>John Face</option>
    </select>
</li>