将meta发布到具有多行的自定义字段!-Wordpress



我正在使用houzez主题,并试图开发一个插件,从API发布到"属性"发布。"属性"是一个自定义帖子,一个自定义字段(additional_feature(有多行。

当我在一篇已经填充了字段的示例文章中使用get_post_meta()additional_feature获得值时,我们得到:

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吗?

*输出中继器元(用于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中创建新的字段

添加到功能.pp

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);
}
}

发生了一些奇怪的事情。我重新尝试了一种不起作用的方法,但我没有更多的想法。我使用了以下代码:

$data = array(
array(     
'fave_additional_feature_title' => 'Ax',
'fave_additional_feature_value' => 111,
),
);
update_post_meta($postid, 'additional_features', $data);

这次成功了。非常奇怪,我不知道它以前怎么不起作用,现在怎么起作用。但是,现在我可以更新自定义字段了。

最新更新