为什么从前端更新meta需要我得到旧的价值?

时间:2018-05-23 14:36:46

标签: php wordpress

新值将发送到数据库,页面会在提交时刷新,但字段会刷新 变得空虚。如果我再手动刷新页面,那么我明白了 新的价值。知道为什么吗?

<form action="" method="POST" class="myForm" autocomplete="off">
    <input id="dateChange" type="text" name="input-test" value="<?php echo str_replace('_', '', $jikuDate); ?>"  autocomplete="off">
    <input id="test-form" type="submit" name="updateDate" value="Update">
</form>

然后我做

<?php

    if(isset($_POST['updateDate'])){
       $post = array(
          'ID' => $id
       );
       if ('Update' === ($_POST['updateDate'] ?? false)) {
         update_post_meta( $post->ID, 'usp-custom-14', $_POST['input-test']);
       }
   }
?>

1 个答案:

答案 0 :(得分:0)

这就是我解决它的方式,而不是最优雅的方法:

首先:

<?php
    $jikuDate = get_post_meta($post->ID, 'usp-custom-14', true);
    if (isset($_POST['updateDate'])) {
        // Execute this code if the submit button is pressed.
        $jikuDate = $_POST['input-test'];
    }
?>

然后是html:

<form action="" method="POST" class="myForm" autocomplete="off">
    <input id="dateChange" type="text" name="input-test" value="<?php echo str_replace('_', '', $jikuDate); ?>"  autocomplete="off">
    <input id="test-form" type="submit" name="updateDate" value="Update">
</form>

然后:

<?php
    if($_SERVER['REQUEST_METHOD']=="POST") {
        if ('Update' === ($_POST['updateDate'] ?? false)) {
            $post = array(
                'ID' => $id
            );
            $jikuDate = $_POST['input-test'];
            update_post_meta( $post['ID'], 'usp-custom-14', $_POST['input-test']);
        }
    }
?>