我有一个模板,用户可以通过我网站前端的表单设置一些自定义元值。我通过函数中的函数调用此表单。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
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);
}