gpt4 book ai didi

php - WordPress 在使用 update_post_meta 保存之前清理数据

转载 作者:行者123 更新时间:2023-12-03 09:16:35 26 4
gpt4 key购买 nike

我正在尝试为我的新 WordPress 模板创建帖子选项,但我不知道如何在保存之前清理或验证我的自定义帖子元数据:

$data = $_POST['enablog_post_options'];

// Update the meta fields in the database.
update_post_meta( $post_id, 'enablog_post_options',$data );

所有选项(YouTube 网址、文本、复选框和单选按钮)均使用我唯一的元 key enablog_post_options 保存。

更新:

sanitize_text_field() 损坏了我的所有代码(保存帖子时所有复选框均被选中),恕我直言,我需要的不仅仅是 sanitize_text_field(),因为 $_POST['enablog_post_options'] 有复选框、文本字段等。

最佳答案

第一。假设$_POST['enablog_post_options']是一个数组,它应该被清理为一个数组,迭代循环中的每个元素。不是字符串,而是所有元素。

因此,请查看您的 enablog_post_options 数组,并为每个元素决定一种依赖于数据类型的清理技术。 WP Codex可以帮助开始它。

现在。当您了解您真正要清理的数据类型时,我怀疑值得一提的是 update_post_meta() 内置清理操作和自定义过滤器您可以 Hook 该函数。

因此,任何人都可以查找 update_metadata() 函数的代码,该函数负责 update_post_meta() here in the Core Metadata API source code .

但与此同时,它会清理:

  • 使用 sanitize_key()wp_unslash() 的元 key ;
  • 使用 wp_unslash()sanitize_meta() 的元值(下面对此有更多说明)。
  • update_metadata()->wpdb::update() 调用 wpdb::prepare() 进行数据库保存查询;<

使用sanitize_meta()进行 sanitizer 。

额外清理[自定义]帖子元的便捷方法是通过 sanitize_meta()update_metadata() 已经将您必须创建的潜在现有自定义清理过滤器 Hook 到元字段清理过程中。这是通过 sanitize_meta() 完成的。

它是从 update_metadata() 调用的,如下所示,其中包含所有帖子元参数:

$meta_value = sanitize_meta( $meta_key, $meta_value, $meta_type );

因此,您可以创建一个自定义清理过滤器来处理您的帖子元,如下所示(WP Codex sanitize_meta() 描述中的示例,上面的链接):

// --- sanitize_meta() call is commented out because it is called from update_metadata()
// $clean_value = sanitize_meta( 'birth-year', $user_input, 'user' );
function sanitize_birth_year_meta( $year ) {
$now = date( 'Y' );
$then = $now - 115; // No users older than 115.
if ( $then > $year || $year > $now ) {
wp_die( 'Invalid entry, go back and try again.' );
}
return $year;
}
add_filter( 'sanitize_user_meta_birth-year', 'sanitize_birth_year_meta' );

继续使用一些虚构的代码,在 sanitize_birth_year_meta() 而不是 $year 中,您将获得 $data 内容,以便在过滤器被调用。

关于php - WordPress 在使用 update_post_meta 保存之前清理数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36970333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com