• Docs
        • Документация OnPress v2
            • Документация OnPress v2
              • Как устроена платформа
              • Быстрый старт
              • Доступ, роли и выбор сайта
                • Страницы
                  • Frontmatter: все поля
                  • Синтаксис markdown
                  • Языки и переводы страниц
                • Фреймы
                  • Вставки onpress/
                  • Бинды data-op-bind
                  • Сборка страницы и статическая копия
                • Готовые фреймы
                  • Фрейм assistant: страница с чатом ассистента
                  • Фрейм outline: оглавление в тексте
                  • Фрейм faq: вопросы из текста страницы
                  • Фрейм article: статья
                  • Фрейм docs: документация
                  • Фрейм site__header: шапка сайта
                  • Фрейм site__footer: подвал сайта
                  • Фрейм article__faq: вопросы из набора
                  • Фрейм landing: лендинг ассистента
                  • Фрейм assistant__chat: чат обычной разметкой
                  • Фрейм site__404: страница «не найдено»
                  • Фрейм news: лента новостей
                  • Фрейм news__category: рубрика новостей
                  • Фрейм news__post: новость
                  • Фрейм news__more: читайте ещё
                  • Фрейм news__share: поделиться
                  • Фрейм author__page: страница автора
                  • Фрейм author__byline: подпись автора
                  • Фрейм author__card: карточка автора
                  • Фрейм author__avatar: аватар автора
                  • Фрейм author__socials: соцсети автора
                  • Фрейм author__head: объявление набора автора
                  • Фрейм home: главная-документ
                  • Фрейм pricing: тарифы
                • Наборы данных и системные источники
                  • Повторитель onpress/repeat
              • Стили и оформление
              • Меню
              • Сайдбар документации
              • Языки сайта
              • Настройки, главная и кэш
              • SEO
              • Медиа
              • Сайты и домены
              • Пользователи и профиль
              • Дашборд и вход
                • Рецепты
                  • Сайт с нуля
                  • Раздел документации
                  • Лендинг из конструктора
                  • FAQ на странице
                  • Свой фрейм из готового
                  • Многоязычный сайт
                  • Поменять меню
                  • Перенести страницу
                  • Картинки в статье
                  • Список из данных
                  • Сменить оформление
                • Справочник API
                  • Справочник: страницы
                  • Справочник: переводы
                  • Справочник: фреймы
                  • Справочник: данные
                  • Справочник: меню
                  • Справочник: сайдбар документации
                  • Справочник: стили
                  • Справочник: настройки, главная, кэш
                  • Справочник: языки
                  • Справочник: SEO
                  • Справочник: медиа
                  • Справочник: сайты
                  • Справочник: пользователи и профиль
                  • Справочник: вход и служебное
                • Ошибки и частые проблемы
                  • Коды ошибок
        • Старая документация v1
            • Старая документация v1
              • Начало
              • Привязка домена
              • Виджеты
              • Структура ссылок
              • Connector.js
              • Шапка
              • Подвал
              • Мультиязычность
              • Меню
              • Как настроить стили сайта через Design
              • Schema разметка
              • Open Graph
              • Аналитика
              • FAQ
              • Robots.txt
              • Sitemap
OnPress OnPress
  • Документация
  • Контакты
Войти
    • Docs
        • Документация OnPress v2
            • Документация OnPress v2
              • Как устроена платформа
              • Быстрый старт
              • Доступ, роли и выбор сайта
                • Страницы
                  • Frontmatter: все поля
                  • Синтаксис markdown
                  • Языки и переводы страниц
                • Фреймы
                  • Вставки onpress/
                  • Бинды data-op-bind
                  • Сборка страницы и статическая копия
                • Готовые фреймы
                  • Фрейм assistant: страница с чатом ассистента
                  • Фрейм outline: оглавление в тексте
                  • Фрейм faq: вопросы из текста страницы
                  • Фрейм article: статья
                  • Фрейм docs: документация
                  • Фрейм site__header: шапка сайта
                  • Фрейм site__footer: подвал сайта
                  • Фрейм article__faq: вопросы из набора
                  • Фрейм landing: лендинг ассистента
                  • Фрейм assistant__chat: чат обычной разметкой
                  • Фрейм site__404: страница «не найдено»
                  • Фрейм news: лента новостей
                  • Фрейм news__category: рубрика новостей
                  • Фрейм news__post: новость
                  • Фрейм news__more: читайте ещё
                  • Фрейм news__share: поделиться
                  • Фрейм author__page: страница автора
                  • Фрейм author__byline: подпись автора
                  • Фрейм author__card: карточка автора
                  • Фрейм author__avatar: аватар автора
                  • Фрейм author__socials: соцсети автора
                  • Фрейм author__head: объявление набора автора
                  • Фрейм home: главная-документ
                  • Фрейм pricing: тарифы
                • Наборы данных и системные источники
                  • Повторитель onpress/repeat
              • Стили и оформление
              • Меню
              • Сайдбар документации
              • Языки сайта
              • Настройки, главная и кэш
              • SEO
              • Медиа
              • Сайты и домены
              • Пользователи и профиль
              • Дашборд и вход
                • Рецепты
                  • Сайт с нуля
                  • Раздел документации
                  • Лендинг из конструктора
                  • FAQ на странице
                  • Свой фрейм из готового
                  • Многоязычный сайт
                  • Поменять меню
                  • Перенести страницу
                  • Картинки в статье
                  • Список из данных
                  • Сменить оформление
                • Справочник API
                  • Справочник: страницы
                  • Справочник: переводы
                  • Справочник: фреймы
                  • Справочник: данные
                  • Справочник: меню
                  • Справочник: сайдбар документации
                  • Справочник: стили
                  • Справочник: настройки, главная, кэш
                  • Справочник: языки
                  • Справочник: SEO
                  • Справочник: медиа
                  • Справочник: сайты
                  • Справочник: пользователи и профиль
                  • Справочник: вход и служебное
                • Ошибки и частые проблемы
                  • Коды ошибок
        • Старая документация v1
            • Старая документация v1
              • Начало
              • Привязка домена
              • Виджеты
              • Структура ссылок
              • Connector.js
              • Шапка
              • Подвал
              • Мультиязычность
              • Меню
              • Как настроить стили сайта через Design
              • Schema разметка
              • Open Graph
              • Аналитика
              • FAQ
              • Robots.txt
              • Sitemap
Фреймы
Markdown
Открыть в ИИ
  • Открыть в ChatGPT
  • Открыть в Claude
  • Открыть в Gemini
  • Открыть в Perplexity
  • Открыть в Grok
  • Открыть в DeepSeek

Бинды data-op-bind

Вставка onpress/… добавляет кусок разметки в поток. Но часто нужно подставить значение внутрь тега: href ссылки на главную, src логотипа, заголовок страницы в h1, поле элемента списка. Для этого тег помечается атрибутом data-op-bind с картой «куда → что».

<a class="logo" data-op-bind='{"href":"site.home_url"}'>
  <img data-op-bind='{"src":"site.logo_url","alt":"site.name"}'>
</a>
<h1 data-op-bind='{"text":"page.title"}'></h1>

После сборки:

<a class="logo" data-op-bind="{&quot;href&quot;:&quot;site.home_url&quot;}" href="https://example.onpress.pro/">
  <img data-op-bind="…" src="https://example.onpress.pro/wp-content/uploads/…/logo.png" alt="Example">
</a>
<h1 data-op-bind="…">Тарифы</h1>

Сам атрибут data-op-bind в результате остаётся — браузеру он безразличен, а по нему видно, что было подставлено. Сборка всегда идёт из исходника, так что подстановки не накапливаются.

Синтаксис

  • Значение атрибута — JSON-объект: ключ — куда писать, значение — токен.
  • Атрибут пишется в одинарных кавычках, JSON внутри — в двойных. В двойных кавычках атрибут оборвётся на первой же кавычке JSON и пропадёт целиком; загрузка фрейма предупредит об этом.
  • Ключ text — заменить содержимое элемента текстом (экранируется). Ключ html — заменить содержимое HTML-строкой как есть. Любой другой ключ — имя атрибута, который будет выставлен (href, src, alt, title, content, datetime, aria-label, data-что-угодно).
  • В одном data-op-bind можно сколько угодно пар.
  • Токен без значения (например page.parent_title у страницы верхнего уровня) ничего не выставляет: атрибут или содержимое остаются как в исходнике. Такие токены перечислены в отчёте сборки полем unresolved.
  • Пустое значение — пустая строка: атрибут будет выставлен пустым.

Подстановка идёт потоковым HTML-процессором ядра, без регулярных выражений: чужая разметка вокруг не меняется.

Токены

site.* — сайт

ТокенЗначение
site.home_url, site.urlадрес главной со слешем на конце
site.site_urlадрес WordPress
site.nameназвание сайта
site.descriptionописание сайта
site.logo_urlлоготип: логотип темы, иначе картинка шапки, иначе иконка сайта
site.hostдомен без схемы
site.langслаг текущего языка
site.yearтекущий год
site.charsetкодировка
site.login_url, site.logout_url, site.admin_urlадреса входа, выхода и админки WordPress
site.blog_idвнутренний номер блога — не выводите его в публичную разметку

page.* — собираемая страница

ТокенЗначение
page.idid страницы
page.urlполный адрес страницы
page.titleзаголовок
page.slug, page.status, page.typeслаг, статус, тип записи
page.parent_id, page.parent_title, page.parent_urlродитель; только если он есть
page.excerptвыдержка; если пустая — первые слова текста
page.descriptionвыдержка без автогенерации: пустая выдержка — пустая строка
page.date, page.date_isoдата публикации в формате сайта и в ISO 8601
page.date_modified, page.date_modified_isoдата изменения
page.thumbnail_id, page.thumbnail_url, page.thumbnail_altизображение записи (_thumbnail_id); только если есть
page.author_id, page.author_nameавтор и его отображаемое имя
page.author_urlархив автора; только если его адрес не раскрывает логин учётной записи
page.author_avatarаватар; только если он локальный, а не Gravatar с хешем почты
page.categories, page.tagsтермины через запятую (у записей с рубриками)
page.category_name, page.category_slug, page.category_urlпервая рубрика
page.pagedномер страницы разбивки из адреса (?blog_page=N), без параметра — 1
page.langслаг языка страницы

Любой токен page.* в data-op-bind делает фрейм зависимым от страницы: он собирается на каждом запросе и не даёт статической копии.

page.data.* — значения из frontmatter

page.data.<ключ> — значение своего ключа из frontmatter страницы; page.meta.<ключ> — его алиас. Работает в data-op-bind, в match повторителя, во вставке onpress/value и в параметрах вызова фрейма.

---
name: "Canva"
data.rating: 5
---
<div class="rating" data-op-bind='{"data-rating":"page.data.rating"}'></div>

Отдаются только ключи, пришедшие из frontmatter публикацией; служебная мета с _ в начале наружу не уходит, произвольную мету страницы так не прочитать. Три формы записи во frontmatter — rating: 5, data.rating: 5 и вложенная под data: — равноправны и читаются одинаково: page.data.rating. Подробно — frontmatter.

item.* — элемент повторителя

Внутри onpress/repeat — поля текущего элемента списка. Вложенность через точку, индекс массива — числом:

<!-- onpress/repeat {"source":"pages.children"} -->
<a data-op-bind='{"href":"item.url","text":"item.title"}'></a>
<!-- /onpress/repeat -->

<!-- onpress/repeat {"source":"team"} -->
<img data-op-bind='{"src":"item.photo.url","alt":"item.name"}'>
<a data-op-bind='{"href":"item.links.0.url"}'>Профиль</a>
<!-- /onpress/repeat -->

Логическое true становится "1", false — пустой строкой; объект или массив не подставляется. Во вложенном повторителе item.* — элемент ближайшего повторителя. Вне повторителя item.* не трогается.

option.* — опция сайта

option.<имя> — скалярная опция WordPress текущего сайта: option.blogname, option.admin_email. Несуществующая опция — пустая строка; массив — не подставляется. Токен считается только при сборке страницы, POST /data/resolve его не вычисляет.

frame.* — параметры вызова

Внутри фрейма, вызванного с параметрами, frame.<ключ> — значение атрибута вызова. Вызов <!-- onpress/frame {"name":"assistant__chat","agent":"canva"} /--> — и во фрейме:

<div id="ai-assistant-mount" data-op-bind='{"data-agent":"frame.agent"}'></div>

Параметра нет — бинд ничего не выставляет. Тот же токен работает в атрибутах вставок внутри фрейма: значение атрибута, целиком равное frame.<ключ> или page.<поле>, заменяется значением, а без значения атрибут снимается и вставка берёт свой дефолт. Подробно — параметры вызова.

raw: — константа

raw:<значение> подставляет значение как есть. Нужен в match повторителя ({"frame.slug":"raw:docs"}), иногда в бинде, когда значение — константа фрейма, и в атрибуте вставки, когда литерал только похож на токен.

header. и footer. — поля старой шапки и подвала

Значения из служебных записей «Header» и «Footer» темы первой версии — для сайтов, перенесённых с v1 с сохранением настроек шапки и подвала.

ТокенЗначение
header.button_title, header.button_url, header.button_target, header.button_iconкнопка шапки
header.show_button, header.show_logo1 или пусто
footer.description, footer.copyrightтекст подвала и копирайт
footer.cta, footer.cta_head, footer.cta_subheadблок призыва
footer.cta_button_title, footer.cta_button_url, footer.cta_button_target, footer.cta_button_iconкнопка призыва
footer.show_logo, footer.just_copyrights1 или пусто

В API v2 эти поля не правятся. На новых сайтах держите такие значения прямо в разметке фрейма или в наборе данных.

Устаревшие frame.id, frame.type, frame.url

Остались от прежней модели фреймов и для новой разметки не нужны. Параметры вызова с такими именами не заводите.

Где бинды работают

Во фреймах и в теле страницы (внутри блока core/html или любой разметки). Где тега-носителя нет — например, внутри <script>, — значение выводит вставка onpress/value с тем же токеном. Внутри повторителя бинды каждой копии подставляются со своим элементом — внешний проход не перепишет заголовок вложенного элемента заголовком внешнего.

Примеры

Шапка с кнопкой из набора данных:

<!-- onpress/repeat {"source":"header-cta","limit":1} -->
<a class="site-header__cta" data-op-bind='{"href":"item.url","text":"item.title","target":"item.target"}'></a>
<!-- /onpress/repeat -->

Карточка статьи с датой в машиночитаемом виде:

<time data-op-bind='{"datetime":"page.date_iso","text":"page.date"}'></time>

Хлебная крошка родителя, которая исчезает у верхнего уровня: элемент без значения остаётся пустым — поставьте ему стиль :empty { display:none } в CSS сайта.

<a class="eyebrow" data-op-bind='{"text":"page.parent_title","href":"page.parent_url"}'></a>

Когда бинд не сработал

  1. Атрибут в двойных кавычках — предупреждение при загрузке фрейма.
  2. Битый JSON в атрибуте — в отчёте сборки предупреждение битый JSON в data-op-bind.
  3. Токен без значения — в отчёте сборки unresolved. Отчёт возвращается в ответе записи фрейма (bake.response.unresolved).
  4. Токен написан с ошибкой — тоже unresolved: словарь закрытый, неизвестное имя значения не имеет.
arrow_backНазад
Вставки onpress/
Далееarrow_forward
Сборка страницы и статическая копия
На этой странице
  • Синтаксис
    • Токены
      • site.* — сайт
        • page.* — собираемая страница
          • page.data.* — значения из frontmatter
            • item.* — элемент повторителя
              • option.* — опция сайта
                • frame.* — параметры вызова
                  • raw: — константа
                    • header. и footer. — поля старой шапки и подвала
                      • Устаревшие frame.id, frame.type, frame.url
                    • Где бинды работают
                      • Примеры
                        • Когда бинд не сработал
                        OnPress
                        OnPress
                        ИП Зуев И.В. ИНН: 360408359441
                        © 2026
                        политика конфиденциальности публичная оферта
                        • visa
                        • mastercard
                        • sber
                        • tpay