问题是WordPress Importer, 为什么我不能导入包含多维数组的post meta,其中数组的值包含换行符?
是否有一种变通方法可以保存我的数据以使其正常工作?在将数据保存到post meta之前,我是否可以在我的卫生过程中采取不同的格式?
背景信息我创建了一个WordPress插件,它提供了一个布局生成器。用户可以使用给定的某些“元素”(即滑块、一组列、内容输入等)为自定义布局构建内容,然后将该自定义布局应用于其站点上的静态页面。
最初,我的目标是让所有自定义布局与WordPress的导入/导出工具配合使用。因此,每个自定义布局实际上都是一个自定义的post类型post,其各自的“元素”集作为post meta保存到该post中。
因此,本质上,我将这个包含所有“元素”的多维数组作为自定义字段保存到自定义帖子中,这是自定义布局。
问题是,如果自定义版面的任何“元素”包含任何用户输入的带换行符的文本,则会阻止通过WordPress导入post meta。结果是导入了自定义贴子(即自定义布局),但元素的贴子元为空。因此,用户会看到一个没有元素的空白布局。
因此,第一个示例没有换行符,可以工作。
然而,在第二个示例中,用户插入了换行符,因此它不起作用,出现了上述问题。
可能的解决方案
我真的希望能够为用户设置示例内容,并为他们提供WordPress导入文件,以便他们能够快速导入这些示例布局。
所以,我只是想知道是否可以采取任何措施来避免这种情况?在我的清理过程中,我是否可以在将数据存储到post meta之前对其进行任何不同的格式化?显然,我只是去掉了所有的空白,但是用户将无法在布局生成器的选项中格式化文本。
最合适的回答,由SO网友:Matthew Boynes 整理而成
我敢说你的问题是\\r\\n
(CRLF)。如果换行符是在Windows中创建的,它们将作为\\r\\n
序列化时,计数为2个字符。然后在导入时,它们将仅计为1个字符,并且会损坏字符串。我测试了这个假设,确信我能够创建一个损坏的序列化字符串。
如果这是你的问题,解决办法就是更换"\\r\\n"
具有"\\n"
保存post meta时。这是一个很长的机会,但我想不出还有什么可能导致这种行为。试一试,让我知道结果如何!