首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存多个Metabox值

保存多个Metabox值
EN

WordPress Development用户
提问于 2022-07-02 02:05:07
回答 1查看 72关注 0票数 0

如何保存多个Metabox值?

我有三个字段,像下面的图片。

我应该使用下面的代码吗?

代码语言:javascript
复制
if (isset($_POST['name'])) {
    update_post_meta($post_id, 'name', sanitize_text_field($_POST['name']));
}

if (isset($_POST['address'])) {
    update_post_meta($post_id, 'address', sanitize_text_field($_POST['address']));
}

if (isset($_POST['phone'])) {
    update_post_meta($post_id, 'phone', sanitize_text_field($_POST['phone']));
}

有办法保存多个metabox值吗?

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2022-07-03 09:02:32

我不知道这段代码在哪里,如果它在ajax或post事件的回调中,但这并不重要。

假设您的代码按预期工作,您可以让它更容易管理,假设您还有另外7个需要更新的元字段,您需要每次复制粘贴您的if条件,这并不理想。

PHP还有一个处理请求的内置函数,filter_input,该函数允许您根据需要对请求数据进行清理和验证,有许多用于数据类型和公共值(如电子邮件)的标志。

所以你可以做这样的事

代码语言:javascript
复制
$fields = [
    'name'    => FILTER_SANITIZE_STRING,
    'address' => FILTER_SANITIZE_STRING,
    'phone'   => FILTER_SANITIZE_NUMBER_INT,
];

foreach ($fields as $field_name => $flag) {
    if (!empty($field = filter_input(INPUT_POST, $field_name, $flag))) {
        update_post_meta($post_id, $field_name, sanitize_text_field($field));
    }
}

因此,现在如果您需要添加另一个字段,比如email,您可以只更新$field数组,而不是创建一个新的条件。这

代码语言:javascript
复制
$fields = [
    'name'    => FILTER_SANITIZE_STRING,
    'address' => FILTER_SANITIZE_STRING,
    'phone'   => FILTER_SANITIZE_NUMBER_INT,
    'email'   => FILTER_SANITIZE_EMAIL
];

而不是另一个

代码语言:javascript
复制
if (isset($_POST['email'])) {
    update_post_meta($post_id, 'phone', sanitize_text_field($_POST['email']));
}
票数 2
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/407293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档