Vous ne pourrez pas utiliser decorateWidget() sur une sortie de plugin. Essayez quelque chose comme ceci :
<script type="text/discourse-plugin" version="0.8.42">
const h = require("virtual-dom").h;
api.createWidget("user-card-custom-field", {
html(attrs) {
const userCustomFields = attrs.user.custom_fields;
if (userCustomFields.user_field_4) {
return h('span.poster-user-field', userCustomFields.user_field_4);
}
}
});
</script>
<script type="text/x-handlebars" data-template-name="/connectors/user-card-post-names/user-card-custom-field">
{{mount-widget widget="user-card-custom-field" args=(hash user=user)}}
</script>
mount-widget transmet l’objet utilisateur disponible depuis la sortie de plugin dans le noyau et le rend accessible dans les attributs du widget user-card-custom-field que nous avons créé.
Assurez-vous d’avoir ajouté user_field_4 à vos paramètres de site « Champs personnalisés publics des utilisateurs » ou « Champs personnalisés des membres du personnel », selon le cas.
Édition
De plus, sauf si vous avez besoin de faire quelque chose de particulièrement spécial, vous devriez pouvoir éviter les widgets et utiliser directement la sortie de plugin :
<script type="text/x-handlebars" data-template-name="/connectors/user-card-post-names/user-card-custom-field">
{{#if user.custom_fields.user_field_1}}
<span class="poster-user-field">{{user.custom_fields.user_field_1}}</span>
{{/if}}
</script>