HTML-сущности не декодируются при использовании WordPress REST API для блоков Гутенберга - PullRequest
0 голосов
/ 07 сентября 2018

Я создаю пользовательский блок Гутенберга, который отправляет запрос в WordPress REST API, чтобы получить несколько сообщений. Я использую axios, чтобы сделать запрос к конечной точке REST.

Когда результат возвращается, существует массив объектов Post, и я могу видеть заголовки сообщений, но все они содержатся в объекте JSON как title.rendered и содержат объекты HTML, например.

title: {
    rendered: "This has a hyphen – oh dear"
}`

Я пытаюсь заполнить <SelectControl> полученными данными, поэтому нет способа использовать метод React dangerouslySetInnerHTML, который бы решил проблему сущностей. Так как же мне избавиться от этих сущностей при заполнении опций?

Вот код, который я использую для заполнения параметров из ответа REST:

const options = response.data.map((post) => {
    return {
        label: post.title.rendered,
        value: post.id,
    };
});

1 Ответ

0 голосов
/ 07 сентября 2018

Это не сразу очевидно, но на самом деле есть метод, доступный в Blocks API для этого.

Вверху вашего кода блока введите:

const { decodeEntities } = wp.htmlEntities;

Тогда вы можете использовать это так:

const options = response.data.map((post) => {
    return {
        label: decodeEntities(post.title.rendered),
        value: post.id,
    };
});

Bazoozaa! HTML-сущности исчезли.

...