api.decorateWidget - como posso encontrar os nomes dos templates?

Como posso encontrar os locais dos modelos do Discourse para configurá-los no código?
Estou especialmente interessado no nome correto do usercard

Existe um componente de tema muito útil para localizar as saídas de plugins de nossos diversos modelos Handlebars: (deprecated) Plugin outlet locations theme component. No final do primeiro post, há um link para uma prévia do componente em nosso site de criação de temas. Você pode usá-lo para encontrar a maioria das saídas de plugins sem nem mesmo precisar instalá-lo em seu próprio site.

Uma coisa a ter em mente é que modelos e widgets são dois conceitos separados. Dito isso, eles podem trabalhar juntos, se necessário, ao montar um widget em uma saída de plugin de um modelo. No entanto, é mais comum usar conectores/componentes/controladores para trabalhar com saídas de plugins neste momento, como você faria em um plugin.

Esta seção do guia do desenvolvedor cobre grande parte do que você está procurando. Também recomendo explorar os repositórios do GitHub de componentes de tema em nossa categoria #theme para ver alguns bons exemplos.

Obrigado pela dica! Encontrei a parte necessária user-card-post-names:after.

Tentei usá-la no código original, mas não funcionou.

Mudei poster-name:after para user-card-post-names:after, mas não funcionou e o campo personalizado não está visível no cartão de usuário. Alguma ideia sobre o motivo disso?

Você não conseguirá usar decorateWidget() em uma saída de plugin. Tente algo assim:

<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>

O mount-widget está passando o objeto user que temos disponível na saída de plugin no núcleo e tornando-o acessível nos atributos do widget user-card-custom-field que criamos.

Certifique-se de ter adicionado user_field_4 às suas configurações de site “campos personalizados de usuário público” ou “campos personalizados de usuário da equipe”, conforme necessário.

Edição

Além disso, a menos que haja algo particularmente especial que você precise fazer, você deve ser capaz de evitar widgets completamente e simplesmente usar a saída 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>

Muito obrigado! Tudo está funcionando.