Примечание. Этот API является экспериментальным, что означает, что в любой будущей версии он может быть изменен или удален без обратной совместимости.
Аннотации — это способ выделить конкретную часть в посте Гутенберга. Примеры этого включают комментирование фрагмента текста и проверку орфографии. Оба могут использовать API аннотаций для пометки фрагмента текста.
API
Чтобы увидеть API для себя, проще всего иметь блок длиной не менее 200 символов без форматирования и поместить в консоль следующее:
wp.data.dispatch( 'core/annotations' ).addAnnotation( {
source: "my-annotations-plugin",
blockClientId: wp.data.select( 'core/editor' ).getBlockOrder()[0],
richTextIdentifier: "content",
range: {
start: 50,
end: 100,
},
} );
Начало и конец диапазона должны быть рассчитаны только на основе текста соответствующего RichText
. Например, в следующем HTML-положении 0 будет означать позицию перед заглавной S:
<strong>Strong text</strong>
Чтобы помочь с определением правильных позиций, wp.richText.create
можно использовать метод. Это разделит часть HTML на текст и форматы.
Все доступные свойства можно найти в документации API addAnnotation
действия.
Блок аннотации
Также возможно полностью аннотировать блок. В этом случае просто укажите selector
свойство и установите его block
. По умолчанию selector
это range
, который может быть использован для текста аннотации.
wp.data.dispatch( 'core/annotations' ).addAnnotation( {
source: "my-annotations-plugin",
blockClientId: wp.data.select( 'core/editor' ).getBlockOrder()[0],
selector: "block",
} );
Это не обеспечивает какой-либо стилизации из коробки, поэтому вы должны предоставить немного CSS, чтобы убедиться, что ваша аннотация отображается:
.is-annotated-by-my-annotations-plugin {
outline: 1px solid black;
}
Текстовая аннотация
Текст аннотации контролируется start
и end
свойствами. Простые start
и end
свойства не работают для HTML, поэтому предполагается, что эти свойства являются смещениями во rich-text
внутренней структуре. Для простоты вы можете думать об этом, как будто весь HTML будет удален, а затем вы вычисляете start
и end
аннотации.