【问题标题】:Can't update post meta using array无法使用数组更新帖子元
【发布时间】:2019-05-23 16:12:04
【问题描述】:

我正在尝试使用 update_post_meta() 并从 数组。

例子:

$thing_to_add = array( '507' => 500, '366' => 550 );
update_post_meta($post_id, 'thing_to_add', $thing_to_add);

我想将整个 $thing_to_add 保存在我的帖子元中,但它没有保存它。如果$thing_to_add 是一个字符串,它会更新。但我想保存数组。我怎样才能做到这一点?

我在下面包含了我的完整代码。

<input type="number" name="inventory_id[507]" />
<input type="number" name="inventory_id[366]" />
$inventory_ids = $_POST['inventory_id'];
//var_dump shows this - array(2) { [507]=> string(2) "500" [366]=> string(2) "550" }
update_post_meta($post_id, 'inventory_ids', $inventory_ids);

已解决:从下面 DavidWinder 的评论中,我注意到它会自动序列化数组并将其保存在 DB 中。但是它不会显示在帖子编辑页面上。

【问题讨论】:

  • 可能你不应该做你正在做的事情。但只是为了绕过你遇到的障碍,你可以尝试:update_post_meta($post_id, 'inventory_ids', is_array($inventory_ids)?implode(',',$inventory_ids):$inventory_ids);
  • 你怎么知道它没有被保存?请记住,它的值是自动序列化的数组 - 您是否使用 get_post_meta 和标志为 true 进行数组提取?也许这会有所帮助:wordpress.stackexchange.com/questions/243238/…
  • @Alex 我需要把它们找回来,所以不能将逗号内爆。
  • @DavidWinder 刚刚看到它实际上序列化了数组并将其保存在数据库中。元数据没有显示在帖子编辑页面上,所以我很担心。没想到它可能会序列化数组而不显示在编辑页面上。谢谢你。它正在工作

标签: php arrays wordpress


【解决方案1】:

注意update_post_meta可以将数据保存为数组,但会自动序列化。

如果您想将值作为数组返回,您应该使用get_post_meta 的标志$single

在你的情况下:

<input type="number" name="inventory_id[507]" />
<input type="number" name="inventory_id[366]" />
$inventory_ids = $_POST['inventory_id'];

//var_dump shows this - array(2) { [507]=> string(2) "500" [366]=> string(2) "550" }

// save the meta
update_post_meta($post_id, 'inventory_ids', $inventory_ids);

// get the meta
$inventory_ids_from_meta = get_post_meta( $post_id, 'inventory_ids', true ); // this is the true flag

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多