在表单中使用UPDATE_USER_META设置和获取自定义元

时间:2014-02-17 作者:Derek

我有一个模板,用户可以通过我网站前端的表单设置一些自定义元值。我通过函数中的函数调用此表单。php文件。

当前,当填写文本输入并点击提交时,这些值会像预期的那样保存到数据库中,但是直到我在浏览器上点击刷新,我才在页面上看到提交的值。但当我这样做时,我会看到用户设置的值,但这些值会从数据库中删除(在浏览器上再次点击刷新将默认返回到未设置值)。

不确定此设置是否正确?

以下是我的模板中的代码:

<h2>Your Values</h2>
Value 1: <?php if(!$new_high) { echo \'Not Set\'; } else { echo \'$\' . $new_high; } ?>
Value 2: <?php if(!$new_medium) { echo \'Not Set\'; } else { echo \'$\' . $new_medium; } ?>
Value 3: <?php if(!$new_low) { echo \'Not Set\'; } else { echo \'$\' . $new_low; } ?>
然后调用模板中的函数,其形式如下:<?php my_form_function(); ?>

在我的函数文件中,我有一个包含表单并更新user\\u meta的文件:

function my_form_function() {
global $current_user;
?>
<form name="setPrices" action="" method="POST">

<fieldset>
<label for="lowPrice">Value 3:</label>
<input type="text" id="lowPrice" name="lowPrice" value="<?php echo $_POST[\'lowPrice\']; ?>" />
</fieldset>

<fieldset>
<label for="mediumPrice">Value 2:</label>
<input type="text" id="mediumPrice" name="mediumPrice" value="<?php echo $_POST[\'mediumPrice\']; ?>" />
</fieldset>

<fieldset>
<label for="highPrice">Value 1:</label>
<input type="text" id="highPrice" name="highPrice" value="<?php echo $_POST[\'highPrice\']; ?>" />
</fieldset>

<button type="submit">Save</button>
</form>

<?php
$low_price = $_POST[\'lowPrice\'];
$medium_price = $_POST[\'mediumPrice\'];
$high_price = $_POST[\'highPrice\'];

update_user_meta( $current_user->ID, \'_low_price\', $low_price); 
update_user_meta( $current_user->ID, \'_medium_price\', $medium_price);
update_user_meta( $current_user->ID, \'_high_price\', $high_price);

}
因此,为了确保我没有把任何人弄糊涂,上面的方法确实有效(有点),当表单提交时,值会按预期保存到数据库中。但直到刷新页面,我才看到模板中的值,一旦刷新,这些值就会重置为零。我知道我的问题是如何/在哪里更新\\u user\\u meta

1 个回复
SO网友:user42826

你需要从WP中提取meta\\u数据,并将该信息填写到表单中。。。像这样:

function my_form_function() {
global $current_user;

$low_price = get_user_meta( $current_user->ID, \'_low_price\', true);
$medium_price = get_user_meta( $current_user->ID, \'_medium_price\', true);
$high_price = get_user_meta( $current_user->ID, \'_high_price\', true);

?>
<form name="setPrices" action="" method="POST">

<fieldset>
<label for="lowPrice">Value 3:</label>
<input type="text" id="lowPrice" name="lowPrice" value="<?php echo $low_price; ?>" />
</fieldset>

<fieldset>
<label for="mediumPrice">Value 2:</label>
<input type="text" id="mediumPrice" name="mediumPrice" value="<?php echo $medium_price; ?>" />
</fieldset>

<fieldset>
<label for="highPrice">Value 1:</label>
<input type="text" id="highPrice" name="highPrice" value="<?php echo $high_price; ?>" />
</fieldset>

<button type="submit">Save</button>
</form>

<?php
$low_price = $_POST[\'lowPrice\'];
$medium_price = $_POST[\'mediumPrice\'];
$high_price = $_POST[\'highPrice\'];

update_user_meta( $current_user->ID, \'_low_price\', $low_price); 
update_user_meta( $current_user->ID, \'_medium_price\', $medium_price);
update_user_meta( $current_user->ID, \'_high_price\', $high_price);

}

结束

相关推荐

Hide gravity forms

我在我的网站上设置了重力表单,我想根据用户是否已在表单/数据库中发布条目来隐藏/显示表单。如果他们做了一个条目,那么我想隐藏它并显示一些简单的文本。我知道重力形式允许你限制参赛人数,但这并不是我想要的。我猜我必须查询数据库,但我不确定最好的编写方法。我是否需要使用诸如get\\u posts之类的工具来检查作者是否有条目?这是最好的方式吗?