api.decorateWidget - テンプレート名を見つけるにはどうすればよいですか?

decorateWidget() をプラグインアウトレットで使用することはできません。以下のようにしてみてください:

<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 は、コアから利用可能なプラグインアウトレットの user オブジェクトを渡しており、作成した user-card-custom-field ウィジェットの属性内で利用可能にしています。

必要に応じて、public user custom fields または staff user custom fields サイト設定に user_field_4 を追加していることを確認してください。

編集

特に特別な処理が必要でなければ、ウィジェット全体を避け、単にプラグインアウトレットを使用することもできます:

<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>
「いいね!」 8