繁体   English   中英

如何使用 WordPress 中的 update_user_meta 更新元值?

[英]How to update meta value using update_user_meta in WordPress?

我已经创建了一个名为“etime”的元密钥,用于存储学生参加在线考试的首选时间。 该字段由我的子主题的 function.php 文件中的 function 创建,并且该字段接受来自我网站注册表的输入。

现在我需要在 WordPress 的 edit-user.php 文件中包含相同的字段,以使学生能够编辑他们的时间偏好。

我尝试使用此代码,但它不起作用。 它不会根据 meta_key“etime”更新 meta_value。

<select name="newetime">
    <option value="9">6 am - 9 am</option>
    <option value="12">9 am - 12 noon</option>
    <option value="15">12 noon - 3 pm</option>
    <option value="18">3 pm - 6 pm</option>
    <option value="21">6 pm - 9 pm</option>
    <option value="24">9 pm - 12 am</option>
</select>

<?php
$etime = get_user_meta( $current_user->ID, 'etime', true);
$newetime = $_POST['newetime'];
update_user_meta( $current_user->ID, 'etime', $etime); 
?>

将以下内容添加到 PHP 的开头

$current_user = wp_get_current_user();

或使用get_current_user_id()代替$current_user->ID

下拉菜单

要在下拉列表中显示当前选项,您需要执行以下操作:

<?php $etime = get_user_meta( get_current_user_id(), 'etime', true); ?>
<select name="newetime">
    <option value="9" <?php selected( $etime, 9 ); ?>>6 am - 9 am</option>
    <option value="12" <?php selected( $etime, 12 ); ?>>9 am - 12 noon</option>
    <option value="15" <?php selected( $etime, 15 ); ?>>12 noon - 3 pm</option>
    <option value="18" <?php selected( $etime, 18 ); ?>>3 pm - 6 pm</option>
    <option value="21" <?php selected( $etime, 21 ); ?>>6 pm - 9 pm</option>
    <option value="24" <?php selected( $etime, 24 ); ?>>9 pm - 12 am</option>
</select>

安全考虑

黑客可以发送他们想要的任何数据作为新的时间。 最好将其转换为 int。

$newetime = (int)$_POST['newetime'];

然后您甚至不必担心接收脏数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM