Php 更新后元wordpress

Php 更新后元wordpress,php,wordpress,post,meta,Php,Wordpress,Post,Meta,!!问题解决了,新问题 <?php if ( isset( $_POST['submit'] ) ) { //if nonce check succeeds. global $post; $postid = $auto->ID; $data = $_POST['doors']; update_post_meta($postid, 'doors', $data ); }

!!问题解决了,新问题

                    <?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>


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

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

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

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

global只在函数中使用(或者您的文件可能包含在函数中?)?您从未传入
$data
,因此您提交的任何内容都将丢失。@MarcB ahhhh真的!你知道如何更改它吗?:)这是链接到一个帖子视图还是仅仅一个页面本身?嘿,这是一个页面本身@davidi如果你在pastebin上更新你的文件,我会看一看。你能给它做一个重置按钮吗?好的,你需要在你的输入$doors=get_post_meta($auto->ID,'doors',true)上方添加这一行;你说的重置按钮是什么意思?那没用?我的输入将被隐藏,如何获得清除按钮以清除值?:)
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 ) );
    }   
}