我正在使用houzez主题, 并尝试开发一个插件以从API发布到”属性”发布。 “属性”是一个自定义帖子, 一个自定义字段(additional_feature)具有多行。
当我在示例帖子中使用get_post_meta()从extra_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 ) ) )
因此, 自定义字段extra_feature里面还有更多字段!当我使用update_post_meta时, 它不起作用。我尝试设置一个数组以完全按照样本数组的样子(通过槽get_post_meta())传递数据。但是, 它不起作用。
关于如何更新Additional_feature的任何想法?
#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中创建新字段。
添加到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);
}
}
#2
发生了一些奇怪的事情。我重试了一种无效的方法, 但是我没有更多的想法了。我使用以下代码:
$data = array(
array(
'fave_additional_feature_title' => 'Ax', 'fave_additional_feature_value' => 111, ), );
update_post_meta($postid, 'additional_features', $data);
这次成功了。非常奇怪, 我不知道它以前如何工作, 现在却可以工作。但是, 现在我可以更新自定义字段。
评论前必须登录!
注册