update post meta wordpress


update post meta wordpress

!问题解决了,新问题。。。。

                    <?php
if ( isset( $_POST['submit'] ) )
    { //if nonce check succeeds.
        global $post;
        $postid = $auto->ID;
        $data = $_POST['doors'];
        update_post_meta($postid, 'doors', $data );
}

$doors = get_post_meta($auto->ID, 'doors', true);
?>
<form method="post" action="">
   <input type='text' name='doors' value='<?php echo $doors ?>' />
   <input type='submit' value='save' name="submit"/>
</form>

现在它起作用了,但我的新问题是所有字段都得到相同的值。。。。,查看imghttp://oi58.tinypic.com/2qtd5p4.jpg

好吧,问题是每个循环都在更新每个项。这是因为你正在测试$_POST是否有值,请更新它。你需要设置一个标识符,以便它知道要更新哪个帖子。

例如,但是输入字段中的post-id。

<input type='text' name='doors[<?php echo $auto->ID; ?>]' value='<?php echo isset($doors) ? $doors : ''; ?>' />

然后您可以从此变量进行更新。

if ( isset( $_POST['doors'] ) ){  
// verify nounce prob a good idea 
    foreach($_POST['doors'] as $item=>$key) {
        $id= sanitize_text_field($item);
        update_post_meta( $id, 'doors', sanitize_text_field( $key ) );
    }   
}

注意这个$POST代码出现在循环中(在foreach语句和endforeach之间(。将它移到页面顶部的循环之外,可以保存每次运行的情况。现在,您还可以在每次提交时更新多个值。你还需要以某种方式检查这些值,以防止有人在他们喜欢的任何帖子上更改postmeta(他们只需要在post[doors][postid]上更改任何doors值(。