2017-08-01 49 views
0

使用ACF pro和搜索循环我需要将包含子字段(repeaterfield)的页面或文章的所有字段放入数组进行处理,所以我可以从数组对象中提取数据,如“名称”和“值”。ACF - 获取页面或文章的所有字段(包括子字段)

我正在尝试“get_field_objects(mypageid);”这看起来很整洁,但它只能获得一级字段。我也需要获得子域。

我四处张望,现在看起来没有任何开箱即用的ACF,但是获得这些数据的最佳方式是什么?特别是因为每个子场都可以有自己的子场。我没有围绕一个循环函数来包装我的头。有人曾经为此写过一个循环吗?

任何帮助将不胜感激!

由于提前, ANB_Seth

+1

get_fields()返回所有字段和子字段作为一个数组,然后你应该可以遍历那个 – Stender

+0

尝试在你的代码中写这个,这样你就可以正确地看到它 - <?php highlight_string(“<?php \ n \ $ fields = \ n “。 var_export(get_fields(),true)。 “; \ N>?”); ?> – Stender

+0

谢谢,但...我只是不明白。 get_fields可能会给我第一级字段,但不是高级字段,以及那些高级字段等......我的意思是,它可能会给我包含在多级数组中的值,但是如何循环没有子集的“关键”,因为get_fields只能给我“名称”和“值”,我该怎么做,一遍又一遍......我很抱歉,它可能非常简单,但我只是没有构建一个简单的函数来收集页面/文章中的所有字段。它可能是我的一个未解决的问题:-S –

回答

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

有可能是一个更好或更简单的方法来做到这一点,但心里很不舒服,它没有我需要的东西,所以我会停在那儿,我想我会分享我的结果:-)

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; 
?> 
+0

感谢这篇文章......我尝试过类似的东西。但问题是:如果我这样做,我必须知道字段名称(在您的示例中为“slider_title”和“slider_description”)。但我不知道他们。事实上,我需要找到它们,以及每个领域的所有其他数据,如价值,类型等,无论是正常还是子领域。我需要一个循环让我将页面/文章的每个字段和子字段作为对象(“id”,“type”,“name”,“value”等) –