WP不显示数组自定义域吗?

时间:2012-10-19 作者:Paul

我想知道为什么WordPress没有列出PHParray() 以及管理面板中自定义字段中的任何序列化数据(用于页面、帖子等)?仅显示包含字符串和数字的自定义字段,用户可以手动编辑这些字段。

编辑:如果post元数据存储为非字符串值,即存储为数组或序列化值,为什么不显示它们?

示例:如果一篇文章有一个元键“custom meta”,字符串值为“yes”,则会显示在元框中,但如果它有一个数组值,如array(\'value\' => \'yes\'), 它不会显示在元框中。

我可以启用此功能吗?

3 个回复
最合适的回答,由SO网友:fuxia 整理而成

没有过滤器可以改变这种行为,您必须replace the entire metabox.

另一方面:我认为没有真正简单的方法来显示和保存这些数组。

虚拟元密钥示例\'foo\':

array (
    0 => 2,
    \'hello\' => array (
        0 => 2,
        \'hello\' => \'world\'
    )
)
为这样的数组创建默认接口将非常困难。此元框用于简单字段,应易于使用。而且不能只显示序列化字符串:编辑可能会破坏它。所以我认为这是一种妥协。总比没有好,但不完美。

SO网友:Eckstein

对于在此处登录的用户,您可以始终在私有页面上创建自定义页面模板,然后在模板页面文件中抛出类似的内容:

/*Template Name: Test Post Meta */
$thisPostMeta = get_post_meta($yourPostId, \'meta_key\');

//Check for type of value
if (is_array($thisPostMeta)) {
print_r($thisPostMeta); 
} else {
echo $thisPostMeta;
}
注:未测试。

SO网友:秋蕊李

我想你可以用serialize()

示例:

$value = array(\'value\' => \'yes\');
$new_value = serialize($value);
add_post_meta($post_id,\'meta_key\',$new_value);
然后,您可以在管理面板中看到metabox。

结束