ACF - 获取页面或帖子的所有字段(包括子字段)



我使用 ACF pro 并且对于搜索循环,我需要将页面或帖子的所有字段(包括子字段(中继器字段((放入数组中进行处理,这样我就可以从数组对象中提取"名称"和"值"等数据。

我正在尝试"get_field_objects(mypageid(;",这看起来很整洁,但它只获得第一级字段。我也需要获取子字段。

我环顾四周,现在似乎ACF没有任何开箱即用的东西,但是获取这些数据的最佳方法是什么?特别是因为每个子字段本身都可以有子字段。我无法为此考虑循环函数。有没有人为此编写过循环?

任何帮助将不胜感激!

提前感谢, ANB_Seth

好的,所以我已经自己完成了这个功能,它似乎可以解决问题:

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

可能有更好或更简单的方法可以做到这一点,但哎呀,它做了我需要的,所以我会停在那里,想我会分享我的结果:-(

如何获取 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;
?>

最新更新