J'ai vu comment obtenir des listes de champs par entité et regrouper avec field_info_instances()
et field_info_field()
, mais je ne vois pas de moyen d'obtenir tous les champs d'un type particulier.
J'ai pu cuisiner pour faire exactement ce que je veux:
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
Mais cela semble être énormément de code et énormément de boucles pour obtenir quelque chose qui devrait probablement être accessible via l'API de champ.
Quelqu'un connaît-il une fonction Field API qui récupérera plus efficacement les données que je recherche?