我正在使用houzez主题,并尝试开发一个插件以从API发布到“属性”发布。 “属性”是一个自定义帖子,一个自定义字段(additional_feature
)具有多行。
当我在示例帖子中使用additional_feature
从get_post_meta()
获得值时,我们得到了:
Array ( [0] => Array ( [0] => Array ( [fave_additional_feature_title] => aaa
[fave_additional_feature_value] => 234 ) [1] => Array (
[fave_additional_feature_title] => bbb [fave_additional_feature_value] => 567
) [2] => Array ( [fave_additional_feature_title] => ccc
[fave_additional_feature_value] => 890 ) ) )
因此,自定义字段additional_feature
内还有更多字段!当我使用update_post_meta
时不起作用。我尝试设置一个数组以完全按照样本数组在调用槽get_post_meta()
时的样子传递数据。但是,它不起作用。
是否知道如何更新additional_feature
?
答案 0 :(得分:1)
*要输出中继器meta(已使用-ACF自定义字段中继器)。
$meta = get_post_meta($post->ID); //Get all post meta per one request
$repeater_count = $meta["additional_feature"][0]; //Count of iteration
for ($i=0; $i<$repeater_count; $i++) {
$feature_title = 'additional_feature_'.$i.'_title';
echo $meta[$feature_title][0]; //Output repeater meta
}
*要更新中继器元数据(使用ACF自定义字段中继器)。更新保存信息。
您可以根据需要更改代码
!!!!在测试站点上更好地生成工作代码,因为使用错误的用户字段名称,在保存帖子时,将在数据库表post_meta中创建新字段。 < / p>
添加到functions.php
add_filter('acf/save_post', 'main_meta_filter', 20);
function main_meta_filter($post_id) {
if ( $post_id != 7 ) //You can use post type if you need
return;
//Repeater
$number_rows = get_post_meta( $post_id, "additional_feature" );//Count of iteration
for ($i=0; $i<$number_rows[0]; $i++) {
$key = 'additional_feature_'.$i.'_title';
//To get old value use $old_value = get_post_meta($post_id, $key, false);
//and output use $old_value[0]
$new_value = 1;//You custom value
update_post_meta($post_id, $key, $new_value);
}
}
答案 1 :(得分:0)
奇怪的事情发生了。我重新尝试了一种无效的方法,但是我没有更多的想法了。我使用了以下代码:
$data = array(
array(
'fave_additional_feature_title' => 'Ax',
'fave_additional_feature_value' => 111,
),
);
update_post_meta($postid, 'additional_features', $data);
这次成功了。非常奇怪,我不知道它以前如何工作,现在却可以工作。但是,现在我可以更新自定义字段了。