ฉันเห็นวิธีรับรายการเขตข้อมูลตามเอนทิตีและรวมกับfield_info_instances()
และfield_info_field()
แต่ฉันไม่เห็นวิธีรับฟิลด์ทั้งหมดสำหรับประเภทเฉพาะ
ฉันสามารถทำอาหารนี้ขึ้นมาเพื่อทำสิ่งที่ฉันต้องการ:
function field_get_fields_of_type($type) {
$fields_info = field_info_instances();
$return = array();
foreach ($fields_info as $entity => $bundles) {
foreach ($bundles as $bundle => $fields) {
foreach ($fields as $field_name => $info) {
$more_info_because_type_isnt_included = field_info_field($field_name);
if ( $more_info_because_type_isnt_included['type'] == $type) {
$return[$field_name] = $more_info_because_type_isnt_included;
}
}
}
}
return $return;
}
dpm(field_get_fields_of_type('entityreference')); // prints out all entityreference fields
แต่ดูเหมือนว่าจะเป็นรหัสที่แย่มากและการวนซ้ำที่แย่มากเพื่อให้ได้สิ่งที่น่าจะเข้าถึงได้ผ่าน Field API
ไม่มีใครรู้ถึงฟังก์ชั่น Field API ที่จะดึงข้อมูลที่ฉันกำลังมองหาได้อย่างมีประสิทธิภาพมากขึ้นหรือไม่