il suffit juste d'un tout petit inner join dans la requete
Pour faire simple, ce "il suffit juste de" a une répercution sur les performances qui est énorme (dans le mauvais sens) et ne marche pas dans tous les cas.
Quand nous avons une liste déroulante, un <select>. Nous avons à l'intérieur des <option> sous la forme : <option value="1">Ma Valeur 1</option>
Ce que vous appelez clé, moi je l'appel valeur (car value) et jamais le formulaire HTML va renvoyer "Ma Valeur 1" (sinon il faut aller se plaindre au W3C).
La valeur est unique, la valeur fait foie, la valeur est la donnée qui importe.
L'affichage n'est que l'affichage et ce qu'il y a affiché dans la liste déroulante importe que peu. L'affichage peut être totalement différent par la suite.
Je ne vais pas lister les tas d'exemples possibles mais ils sont plus que nombreux.
Donc pour afficher un custom field, il y a une méthode à suivre. C'est ainsi et ça gère tous les cas possible, même les "extended custom field" via plugin.
$this->fieldsClass->show($this->fields['my_custom_field'], $this->row->my_custom_field);
avec "my_custom_field" un custom field visible dans le front-end sinon il ne fera pas parti du tableau $this-fields.
Et en cas de soucis :
var_dump($this->fields);
var_dump(array_keys($this->fields));
var_dump($this->fields['my_custom_field']);
ou au moins $this->row->champ_perso serait un array de key value on pourrait choisir
Non, cela générerait des bugs, des incompatibilité avec les versions précédentes, les plugins et les surcharges de vue ainsi qu'un incompréhension générale.
La valeur doit contenir la valeur et uniquement la valeur.
Pour moi, le sujet est clos.