ACF - 获取页面或文章的所有字段(包括子字段)
使用ACF pro和搜索循环我需要将包含子字段(repeaterfield)的页面或文章的所有字段放入数组进行处理,所以我可以从数组对象中提取数据,如“名称”和“值”。ACF - 获取页面或文章的所有字段(包括子字段)
我正在尝试“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;
?>
感谢这篇文章......我尝试过类似的东西。但问题是:如果我这样做,我必须知道字段名称(在您的示例中为“slider_title”和“slider_description”)。但我不知道他们。事实上,我需要找到它们,以及每个领域的所有其他数据,如价值,类型等,无论是正常还是子领域。我需要一个循环让我将页面/文章的每个字段和子字段作为对象(“id”,“type”,“name”,“value”等) –
get_fields()返回所有字段和子字段作为一个数组,然后你应该可以遍历那个 – Stender
尝试在你的代码中写这个,这样你就可以正确地看到它 - ?”); ?> – Stender
谢谢,但...我只是不明白。 get_fields可能会给我第一级字段,但不是高级字段,以及那些高级字段等......我的意思是,它可能会给我包含在多级数组中的值,但是如何循环没有子集的“关键”,因为get_fields只能给我“名称”和“值”,我该怎么做,一遍又一遍......我很抱歉,它可能非常简单,但我只是没有构建一个简单的函数来收集页面/文章中的所有字段。它可能是我的一个未解决的问题:-S –