如何使用ADD_POST_META()在自定义字段的键中使用括号填充?

时间:2021-07-14 作者:l3est

我正在努力填补WP SEO Structured Data Schema 具有add\\u post\\u meta函数的字段,但它不能正常工作。我查看了Wordpress管理面板中添加的一篇帖子,保存方式如下:‍‍‍‍

a:12:{s:6:"active";s:1:"1";s:8:"headline";s:13:"aaa";s:16:"mainEntityOfPage";s:37:"http://1.test/?p=83&preview=true";s:6:"author";s:1:"c";s:5:"image";s:2:"91";s:13:"datePublished";s:1:"d";s:12:"dateModified";s:1:"e";s:9:"publisher";s:1:"f";s:14:"publisherImage";s:2:"91";s:11:"description";s:1:"g";s:11:"articleBody";s:1:"h";s:19:"alternativeHeadline";s:1:"i";}
看起来像这样_schema_article 是的父级_schema_article[headline] 我正试图保存它。这是我的代码:

<?php
require_once("wp-load.php");
$my_post = array(
    \'post_title\'    => "title",
    \'post_content\'  => "content",
    \'post_status\'   => \'publish\',
    \'post_author\'   => 1,
);
$remote_id = wp_insert_post($my_post);
echo $remote_id;
add_post_meta($remote_id, "_schema_article[headline]", "aaa", true);
如何使用add_post_meta 或其他WordPress功能?

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

这是PHP serialization format, 和用于序列化阵列以存储在数据库中。核心WordPress功能为您处理此过程。您只需要使用数组作为值。

例如,这:

$schema_article = array(
    \'headline\' => \'aaa\',
);

update_post_meta( $remote_id, \'_schema_article\', $schema_article );
将保存此值:

a:1:{s:8:"headline";s:3:"aaa";}
如果要查看值的原始数组,get_post_meta() 将为您取消序列化。

例如,这:

$schema_article = get_post_meta( $remote_id, \'_schema_article\', true );
将返回(如通过var_dump()):

array(1) {
  ["headline"]=>
  string(3) "aaa"
}
因此,在保存值时,需要模仿原始数组格式。我想分享一下你的例子,但它不能取消序列化,因为它已经被手工编辑的值损坏了。

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在