Вы правы, этот код теперь устарел, так как мы заменили систему виджетов. Вот информация об этом за прошлый год: Upcoming post stream changes - How to prepare themes and plugins .
Всё ещё можно заставить это работать, но вам придётся использовать компонент Glimmer. Это может выглядеть примерно так:
import Component from "@glimmer/component";
import { apiInitializer } from "discourse/lib/api";
class UserFieldBadge extends Component {
static shouldRender(args) {
return !!args.post?.user_custom_fields?.user_field_4;
}
<template>
<span class="poster-user-field">
{{@post.user_custom_fields.user_field_4}}
</span>
</template>
}
export default apiInitializer((api) => {
api.renderAfterWrapperOutlet("post-meta-data-poster-name", UserFieldBadge);
});
Помните, что в этом коде user_field_4 нужно заменить на фактическое поле, которое вы хотите отображать.
Оставлю другим участникам возможность модифицировать этот код так, чтобы он мог отображать ВСЕ публичные пользовательские поля. ![]()