多维数组选项上的UPDATE_POST_META

时间:2019-10-29 作者:DevSem

更新数据库时,我使用update_post_meta($employee->ID, \'_email_address\', $record->email); 并更新此结果:

object(stdClass)[1295]
  public \'email\' => string \'[email protected]\' (length=32)
如何针对领导、个人资料等文件的内部数组?

object(stdClass)[1295]
 public \'biography\' => string \'\' (length=0)
 public \'files\' => 
    object(stdClass)[1294]
      public \'leadership\' => null
      public \'profile\' => null
      public \'blog\' => null
      public \'thumbnail\' => null

1 个回复
SO网友:Tom J Nowell

你不能,get_post_meta 它的相关API都在键/值对上工作,您可以更新值,但不能更新它的一个子部分。You have to retrieve the entire value, modify it, then put it back as a whole.

此外,值总是字符串,因此为了实现这一点,WordPress将PHP序列化您的数据,引入大量安全攻击向量(例如对象反序列化攻击)。你的帖子元价值也很难找到。

相反,通过使用多个键/值对,而不是将数据序列化为单个键/值对,来避免这一点和所有相关的问题。记住,您可以使用同一个键拥有多个post meta键/值,键不是唯一的!

如果必须以串行格式存储多维数据,请改用JSON。不要依赖WP将对象和数组展平为字符串