2017-08-01 64 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」等) –