我使用ACF专业版和搜索循环我需要将页面或帖子的所有字段(包括子字段(repeaterfield))放入数组进行处理,这样我就可以从数组中提取“name”和“value”等数据-objects。
我在尝试“get_field_objects(mypageid);”这似乎很整洁,但它只获得了第一级的领域。我也需要获得子字段。
我环顾四周,现在似乎没有任何开箱即用的ACF,但获得这些数据的最佳方法是什么?特别是因为每个子场都可以有自己的子场。我无法绕过循环函数。有没有人写过这样的循环?
非常感谢任何帮助!
提前致谢, ANB_Seth
答案 0 :(得分:0)
如何获取ACF转发器字段?
在页面中添加以下代码或发布
示例:
主要ACF文件名:homepage_slider
子字段名称:slider_title,slider_description
<?php
if( have_rows('homepage_slider') ):
// loop through the rows of data
while ( have_rows('homepage_slider') ) : the_row();
?>
<h3><?php the_sub_field('slider_title'); ?></h3>
<p><?php the_sub_field('slider_description'); ?></p>
<?php
endwhile;
else :
// no rows found
endif;
?>
答案 1 :(得分:0)
好的,所以我一直在努力研究这些似乎可以解决问题的方法:
function abGetAllFields($pro_num){
$tmpArr = get_field_objects($pro_num);
$fillArray = array();
foreach( $tmpArr as $tmpFieldObject ) {
$fillArray = abGetAllFieldsCycle($fillArray, $tmpFieldObject["name"], $tmpFieldObject["value"]);
}
return $fillArray;
}
function abGetAllFieldsCycle($fillArray, $name, $value) {
if (is_array($value)) {
foreach( $value as $key => $value ) {
$fillArray = abGetAllFieldsCycle($fillArray, $key, $value);
}
} else {
array_push($fillArray, [$name, $value]);
}
return $fillArray;
}
$myFieldArray = abGetAllFields($pageId);
可能有一种更好或更简单的方法,但是哎呀,它做了我需要的,所以我会在那里停下来,以为我分享我的结果: - )