Eu já vi como obter listas de campos por entidade e agrupar com field_info_instances()
e field_info_field()
, mas não estou vendo uma maneira de obter todos os campos de um tipo específico.
Consegui preparar isso para fazer exatamente o que eu quero:
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
Mas isso parece ser uma enorme quantidade de código e muito loop para obter algo que provavelmente deve ser alcançável por meio da API de campo.
Alguém sabe de uma função da API de campo que recuperará com mais eficiência os dados que estou procurando?