add_row ACF Pro 不保存转发器值
add_row in ACF Pro isn't saving repeater values
我的情况
我正在使用 Advanced Custom Fields Pro 在 wordpress 中存储 post 的元数据。
我的 post 是动态创建的(不是通过管理界面),这意味着我明确需要使用字段键而不是字段名称来填充元数据。我的一个字段是带有单个文本区域的转发器字段,另一个是标准文本区域。
我的代码
下面的代码是我调用的(每个 post 一次)。 post 是使用之前的 wp_insert_post()
创建的。
// Populate "Name"
update_field('field_566e360961c2f', 'John Doe', $wp_identifier);
// Populate "Sponsors"
foreach($sponsors as $sponsor) {
// Define "Sponsor Name"
$new_sponsor = array(
'field_566e32fb943a5' => 'Beats and Corn Companye'
);
add_row('field_566e32bd943a4', $new_sponsor, $wp_identifier);
}
结果是填充了标准文本字段,并创建了一个 "sponsor" 转发器项目,但赞助商名称的值为空。
生成的相关 wp_postmeta
数据如下所示:
| 18226 | 71 | name | John Doe
| 19234 | 71 | sponsors | 1 |
| 19235 | 71 | _0_field_566e32fb943a5 | Beats and Corn Company |
我的问题
我做错了什么?查看 add_row()
的文档,这似乎是正确的方法。转发器字段是否有不同的方式来标记我不知道的键?
今天的文档中并没有非常清楚地说明这一点,但事实证明 add_row
仅在已保存现有行的情况下才有效。第一次尝试填充转发器字段时,您必须改用 update_field
并传递一个值数组数组。
更正后的代码:
// Populate "Name"
update_field('field_566e360961c2f', 'John Doe', $wp_identifier);
// Populate "Sponsors"
$new_sponsors = array();
foreach($sponsors as $sponsor) {
// Define "Sponsor Name"
$new_sponsor = array(
'field_566e32fb943a5' => 'Beats and Corn Companye'
);
$new_sponsors[] = $new_sponsor;
}
update_field('field_566e32bd943a4', $new_sponsors, $wp_identifier);
我的情况
我正在使用 Advanced Custom Fields Pro 在 wordpress 中存储 post 的元数据。
我的 post 是动态创建的(不是通过管理界面),这意味着我明确需要使用字段键而不是字段名称来填充元数据。我的一个字段是带有单个文本区域的转发器字段,另一个是标准文本区域。
我的代码
下面的代码是我调用的(每个 post 一次)。 post 是使用之前的 wp_insert_post()
创建的。
// Populate "Name"
update_field('field_566e360961c2f', 'John Doe', $wp_identifier);
// Populate "Sponsors"
foreach($sponsors as $sponsor) {
// Define "Sponsor Name"
$new_sponsor = array(
'field_566e32fb943a5' => 'Beats and Corn Companye'
);
add_row('field_566e32bd943a4', $new_sponsor, $wp_identifier);
}
结果是填充了标准文本字段,并创建了一个 "sponsor" 转发器项目,但赞助商名称的值为空。
生成的相关 wp_postmeta
数据如下所示:
| 18226 | 71 | name | John Doe
| 19234 | 71 | sponsors | 1 |
| 19235 | 71 | _0_field_566e32fb943a5 | Beats and Corn Company |
我的问题
我做错了什么?查看 add_row()
的文档,这似乎是正确的方法。转发器字段是否有不同的方式来标记我不知道的键?
今天的文档中并没有非常清楚地说明这一点,但事实证明 add_row
仅在已保存现有行的情况下才有效。第一次尝试填充转发器字段时,您必须改用 update_field
并传递一个值数组数组。
更正后的代码:
// Populate "Name"
update_field('field_566e360961c2f', 'John Doe', $wp_identifier);
// Populate "Sponsors"
$new_sponsors = array();
foreach($sponsors as $sponsor) {
// Define "Sponsor Name"
$new_sponsor = array(
'field_566e32fb943a5' => 'Beats and Corn Companye'
);
$new_sponsors[] = $new_sponsor;
}
update_field('field_566e32bd943a4', $new_sponsors, $wp_identifier);