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

时间:2018-08-03 23:21:20

标签: wordpress wordpress-theming custom-wordpress-pages

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

当我在示例帖子中使用additional_featureget_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

2 个答案:

答案 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);

这次成功了。非常奇怪,我不知道它以前如何工作,现在却可以工作。但是,现在我可以更新自定义字段了。