首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数组保存到高级自定义字段WordPress

将数组保存到高级自定义字段WordPress
EN

Stack Overflow用户
提问于 2013-04-27 02:50:30
回答 2查看 4.9K关注 0票数 3

我正在使用WordPress的ACF plugin。我通过我的主题以编程的方式发布到一个自定义的post类型。现在,我认为我可以很容易地将一组项保存到自定义字段中,但是每当我尝试这样做时,都没有得到任何输入。当我在管理区域检查post屏幕时,我只是得到了这个错误:

Warning: htmlspecialchars() expects parameter 1 to be string, array given in /home/lukeseag/public_html/spidr-wp/wp-content/plugins/advanced-custom-fields/core/fields/text.php on line 127

现在,我想就如何解决这个问题提出一些建议。

为了给出一些上下文,我以编程方式保存用户输入的数据,并用它创建一个post。大部分数据都是简单的字符串和数字,每个字符串和数字都可以有自己的自定义字段。

但是我有一个未知数量的text stringsURL's (每个都有一个id号码)通过这个页面,这需要链接到相同的帖子。我需要能够输出每一组text stringURL到他们自己的single.php post页面上的目录。现在,理想情况下,这些文本/url对应该保存在一个单独的数组中,这样我就可以循环遍历该数组并输出数据,但是看起来ACF不想让这种情况发生?

关于如何保存此数据并将其轻松地输出到single.php页面,有什么建议吗?每组结果都有编号( ID )、编号( text string )和编号( url )。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-27 09:55:25

这就是为什么所有这些"frameworks"通常都是more pain than gain。它们被设计成在懒人看来是灵活的,但在实际案例中,它们总是被证明是无用的,这比没有它们实际上很容易实现的任何事情都要复杂一点。

不管怎样,关于你的问题。

问题是您传递的是数组而不是字符串。我不打算去调试这个插件,不管怎么说,需要更多的代码和信息,所以我只给你一个可能的简单的解决方案,那就是像这样组成一个pseudo-array string

代码语言:javascript
运行
复制
'ID|URL|STRING'

请注意,分隔符管道(|)只是一个示例,您可以使用( , )( : )( # )或其他任何东西。

换句话说:

代码语言:javascript
运行
复制
$url = 'http://myurl.url/something';
$id = 35;
$string = 'my string';

$pseudo_r = $id . '|' . $url .  '|' . $string . '|'; // results in 'ID|URL|STRING';

或者您可以使用implode()函数

代码语言:javascript
运行
复制
 $pseudo_r = array(
       "url" => $url,
       "id" => $id ,
       "string" => $string
       );

$pseudo_r = implode("|", $pseudo_r); // gives a string

并将其作为字符串传递,稍后可以使用explode()对其进行分解,如下所示:

代码语言:javascript
运行
复制
$pseudo_r = explode( '|', $pseudo_r ); // gives back the original array

(请注意,现在该数组不再是NON ASSOCIATIVE。)

现在,由于您提到每个集合都是一个set,因此可以使用不同的分隔符从集合中组成相同的伪数组。

这可能对你有用,但是essentially it is wrong

为什么这是错的?

因为这是一个通用的、有点黑客的解决方案,实际上忽略了您的数据类型。您混合了3种类型的数据类型:URLIDSTRING。这3个(应该)都可能有不同的验证方案,我怀疑htmlspecialchars()部件属于URL

另一种解决方案是在ACF设置中找到正确的数据字段,或者为每个字段使用不同的字段,然后使用implode()explode()函数一起显示它。

票数 2
EN

Stack Overflow用户

发布于 2013-07-25 00:27:58

Yo可以使用json_encode($your_array)和json_decode()保存阵列以恢复它。这也适用于关联数组。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16243309

复制
相关文章

相似问题

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