# Как программно получить external\_id для темы

**URL:** <https://meta.discourse.org/t/how-to-programmatically-retrieve-the-external-id-for-a-topic/259914>\
**Category:** Development\
**Created:** [29.Март.2023 22:44:36 UTC](https://meta.discourse.org/t/how-to-programmatically-retrieve-the-external-id-for-a-topic/259914 "2023-03-29T22:44:36Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)\
**Post date:** [30.Март.2023 21:48:57 UTC](https://meta.discourse.org/t/how-to-programmatically-retrieve-the-external-id-for-a-topic/259914/7 "2023-03-30T21:48:57Z")

</div>

> [@Sean O'Sullivan](#):
>
> но мы замечаем, что в Topics API есть поле «external\_id», которое выглядит в точности как то, что нам нужно,

Раньше я этого не замечал. Несколько лет назад я искал что-то подобное для связывания идентификаторов записей WordPress с темами Discourse.

Свойство `external_id` темы будет возвращено на клиенте только в том случае, если у темы есть `external_id`. Если у темы его нет, вы не получите значение `null`. Это работает у меня для тем, у которых есть `external_id`:

```javascript
<script type="text/discourse-plugin" version="0.11.0">
api.onPageChange (() => {
    const c = api.container.lookup("controller:topic");
    if (c) {
        const m = c.get("model");
        if (m && m.hasOwnProperty('external_id')) {
        console.log("the external_id is ", m.external_id);
        }
    }
});
</script>

```

---

_[View the full topic](https://meta.discourse.org/t/how-to-programmatically-retrieve-the-external-id-for-a-topic/259914)._
