!问题解决了,新问题......
<?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>
现在它起作用了,但我的新问题是所有字段都具有相同的值....,看看 img http://oi58.tinypic.com/2qtd5p4.jpg
好吧,你的问题是每个循环都在更新每个项目。这是因为您正在测试 $_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 之间)。将其移至页面顶部的循环外部以保存它每次都运行。现在,您还可以在每次提交时更新多个值。您还需要以某种方式检查这些值,以防止有人更改他们喜欢的任何帖子上的帖子元(他们需要做的就是 post[doors][postid] 来更改任何门值)。