• Как устроено
  • Быстрый старт
  • Доступ и токен
    • Страницы
      • 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
      • Медиа
      • Сайты
      • Пользователи и профиль
      • Вход и служебное
    • Ошибки и проблемы
      • Коды ошибок
OnPress OnPress
  • Документация
  • Контакты
Войти
  • Как устроено
  • Быстрый старт
  • Доступ и токен
    • Страницы
      • 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
      • Медиа
      • Сайты
      • Пользователи и профиль
      • Вход и служебное
    • Ошибки и проблемы
      • Коды ошибок
Страницы
Markdown
Открыть в ИИ
  • Открыть в ChatGPT
  • Открыть в Claude
  • Открыть в Gemini
  • Открыть в Perplexity
  • Открыть в Grok
  • Открыть в DeepSeek

Frontmatter: все поля

Frontmatter — блок key: value между двумя строками --- в начале markdown. Он задаёт всё, кроме тела страницы: заголовок, адрес, язык, фрейм, SEO, служебные поля.

---
name: "Тарифы"
slug: "tarify"
url: "/company/tarify/"
lang: "ru"
status: "publish"
frame: "article"
excerpt: "Три тарифа и что в них входит."
seo_title: "Тарифы OnPress — цены и возможности"
seo_description: "Сколько стоит OnPress и что входит в каждый тариф."
keyword: "тарифы onpress"
topic: "Цены"
---

Формат

Разбор простейший, и это важно знать заранее:

  • одна строка — одно поле: ключ: значение. Списков и многострочных значений нет; единственная вложенная форма — ключи под data: (см. свои ключи);
  • всё после первого двоеточия — значение; двоеточия внутри значения допустимы;
  • кавычки вокруг значения (двойные или одинарные) снимаются; внутри кавычек можно писать что угодно, включая # и :;
  • строки, начинающиеся с #, — комментарии;
  • все значения — строки. Флаги принимают true, 1, yes, on (регистр не важен); всё остальное — ложь;
  • ключи чувствительны к регистру: Slug — это не slug, а незнакомый ключ.

Блок должен стоять в самом начале текста. Без него публикация создаст страницу без заголовка, слага, языка и фрейма — пишите frontmatter всегда.

Заголовок и адрес

ПолеЧто делает
nameЗаголовок страницы. Теги вырезаются. Синоним — title (name главнее). Из заголовка собирается слаг, если slug не указан
slugСлаг — последний сегмент адреса. Приводится к виду WordPress: нижний регистр, транслитерация кириллицы, пробелы в дефисы. Уникален среди соседей одного языка: занятый получит суффикс -2, и ответ скажет об этом в slug_changed
urlПолный путь страницы: /company/tarify/. Все сегменты кроме последнего — существующие страницы-родители (иначе 422 parent_not_found). Последний сегмент — сама страница, но её слаг берётся из slug, а не отсюда. Языковой префикс (/ru/…) распознаётся и отбрасывается. Схема и домен — 422 absolute_url_in_path
parentId родителя числом, если url не указан; 0 — верхний уровень. При url игнорируется
idОбновить именно эту страницу. Страница другого языка — 409 lang_mismatch

Если не указаны ни url, ни parent, при создании страница встаёт на верхний уровень, а при обновлении остаётся там, где была.

Язык и переводы

ПолеЧто делает
langСлаг языка сайта (ru, en). Не указан — язык сайта по умолчанию и предупреждение. Язык, которого на сайте нет, — 422 unknown_language со списком. На сайте без Polylang игнорируется с предупреждением
translation_ofОригинал, переводом которого является страница: id, слаг или путь (можно с языковым префиксом). Требует lang, отличный от языка оригинала. Страница вступает в группу переводов оригинала в той же транзакции, что и запись. Подробно — переводы

Вид

ПолеЧто делает
frameФрейм страницы: слаг или id, ровно один. Пустое значение снимает фрейм. Список в любой форме (a, b, [a, b], header=…) — 400 frame_single. Фрейма нет на этом сайте — 404 frame_not_found. Поле frame в теле запроса перекрывает frontmatter
templateИгнорируется. Шаблонов темы в v2 нет, вид задаёт frame. Принимается, чтобы не ломать старые скрипты, и даёт предупреждение template_ignored

Без фрейма страница на сайте v2 отвечает 404 — ставьте frame в каждой публикации.

Статус и даты

ПолеЧто делает
statuspublish (по умолчанию), draft, pending, private, future. Любое другое значение — 400 invalid_status
dateДата публикации в местном времени сайта, YYYY-MM-DD HH:MM:SS. Вместе с status: future откладывает публикацию. Без date новая страница получает текущее время, существующая сохраняет свою дату

Текст вокруг страницы

ПолеКуда пишется
excerptВыдержка (post_excerpt): лид под заголовком, описание в списках. Указана — пишется, "" — очищается, не указана — не трогается. Отдельно правится PATCH /pages/{ref}

SEO

ПолеКуда пишется
seo_titleЗаголовок для поиска (<title>) — поле Yoast. Пишется, только если значение не пустое: очистить его через frontmatter нельзя
seo_descriptionМета-описание — поле Yoast. То же правило пустого значения
keywordКлючевая фраза Yoast. Заодно ложится обычным метаполем keyword (так ведёт себя и первая версия API)

SEO-настройки уровня сайта — шаблоны заголовков, разделитель, карта сайта — на странице SEO.

Служебные поля

ПолеЧто делает
topicТема страницы — термин таксономии topic. Одно значение: "SEO, контент" станет одним термином с запятой в имени, а не двумя
targetМетаполе _onpress_page_target: страница, на которую эта должна ссылаться (для перелинковки). "" или "0" удаляют
anchorМетаполе _onpress_page_anchor: анкор этой ссылки. "" или "0" удаляют
max_publish_dateМетаполе max_publish_date для своих сценариев. "" или "0" удаляют
domainТолько сверка: если домен — другой сайт, чем выбран адресом запроса, — 409 domain_mismatch. Сайт frontmatter не выбирает никогда
typeТолько page. Любой другой тип — 501 post_type_not_supported: v2 пишет только страницы
categoryИгнорируется с предупреждением: у страниц нет рубрик

Флаги публикации

Принимаются и во frontmatter, и в теле запроса; frontmatter главнее.

ФлагЧто делает
create_missing_parentsСоздать недостающих родителей из url пустыми черновиками. Созданные перечисляются в created_stubs. Черновик-родитель делает адрес потомка недоступным, пока его не опубликовать
slug_lookupfalse — не искать существующую страницу по слагу; без id всегда создаётся новая
link_softЕсли translation_of не сработал (оригинала нет, у него нет языка, язык совпадает) — всё равно опубликовать страницу, без привязки. Ошибка придёт в translation_link_error и warnings

Свои ключи

Любой другой ключ пишется метаполем страницы с тем же именем, как есть:

---
name: "Статья"
slug: "statya"
reading_time: "7 минут"
---

Ответ предупредит: frontmatter keys the API does not know were stored as post meta as-is: reading_time — чтобы ошибку в имени документированного поля было видно. Такие ключи запоминаются и возвращаются в выгрузке GET /pages/{ref}/markdown в порядке последней публикации, поэтому круг «выгрузил — поправил — залил» их не теряет. Ключ, убранный из frontmatter, пропадает из выгрузки, но само метаполе остаётся — удалить его API не умеет. Пустое значение не пишется.

Часть своих ключей читает тема, и про них предупреждения нет:

КлючЧто делает
nav_labelкороткая подпись страницы в сайдбаре документации: страница «Frontmatter: все поля» показывается в дереве как «Frontmatter»
header_visibility, footer_visibilityhide прячет шапку или подвал оформления темы
left_aside_type, left_aside_page, left_aside_menu, right_aside_typeбоковые колонки оформления темы
pinnedзакреплённая заметка

Они пишутся метаполем и возвращаются в выгрузке, как все свои ключи.

Данные страницы для фреймов. Свой ключ можно записать в трёх равноправных формах:

---
rating: 5
data.rating: 5
data:
  rating: 5
---

Любая из них кладёт значение в одну мету rating (в одной публикации выберите одну форму). Форма с data. и вложенная под data: явно говорят, что это данные для вывода, — про них нет предупреждения о незнакомом ключе. Выгрузка возвращает ключ в той форме, в какой его записали; строковые значения берёт в кавычки, как все прочие ключи.

Во фрейме значение читается токеном page.data.rating (алиас page.meta.rating) — в data-op-bind, в match повторителя, во вставке onpress/value и в параметрах вызова фрейма. Отдаются только ключи, пришедшие из frontmatter публикацией; служебные с _ в начале наружу не уходят. Язык страницы читается токеном page.lang. Все токены — в биндах.

Ключи с подчёркиванием в начале — это служебная мета, и через frontmatter пишутся только два вида:

  • _thumbnail_id — изображение записи, которое выводит вставка onpress/featured-image: _thumbnail_id: 5829 (id вложения из медиатеки). Других способов поставить изображение записи в v2 нет;
  • _yoast_wpseo_* — постраничные поля Yoast, например _yoast_wpseo_meta-robots-noindex: "1" (закрыть страницу от индексации) или _yoast_wpseo_opengraph-image-id.

Они пишутся без предупреждения и не возвращаются в выгрузке — держите их в исходнике страницы. Любой другой ключ с подчёркиванием (_onpress_frame, _wp_page_template и прочие) не пишется: публикация проходит, а warnings называет пропущенные ключи. Фрейм ставится полем frame.

Что приходит в выгрузке

GET /pages/{ref}/markdown собирает frontmatter из записи в таком порядке: id, name, SEO-поля, keyword, topic, slug, date, status, url, lang, frame (всегда, даже пустым), target, anchor, excerpt, затем свои ключи. Пустые значения ключей не создают — иначе обратная заливка стёрла бы поля пустыми строками.

С ?as=translation_source вместо id приходит translation_of, а status не приходит: файл готов стать переводом после замены lang и текста.

Поля тела запроса

Помимо markdown тело POST /pages/markdown принимает:

ПолеТипЧто делает
framestringфрейм страницы, перекрывает frontmatter
blocksarrayдополнительные блоки Гутенберга после тела: core/*, блоки плагина onpress/* или {"type":"raw","content":"<!-- wp:… -->"}; ACF-блоки — 501 acf_block_unsupported; не массив — 400 blocks_invalid
create_missing_parents, link_soft, slug_lookupboolте же флаги, frontmatter главнее
faq_autodetectboolсобрать раздел ## FAQ (и его аналоги на других языках) в блок плагина wp:onpress/faq-items; по умолчанию выключено. Для новых страниц используйте фрейм faq со слотом или вставку onpress/faq — см. рецепт FAQ
faq_markersstring[]свои заголовки раздела FAQ для faq_autodetect
templatestringигнорируется, как и во frontmatter
dry_runboolне поддерживается: 400 dry_run_not_supported
arrow_backНазад
Страницы
Далееarrow_forward
Синтаксис markdown
На этой странице
  • Формат
    • Заголовок и адрес
      • Язык и переводы
        • Вид
          • Статус и даты
            • Текст вокруг страницы
              • SEO
                • Служебные поля
                  • Флаги публикации
                    • Свои ключи
                      • Что приходит в выгрузке
                        • Поля тела запроса
                        OnPress
                        OnPress
                        ИП Зуев И.В. ИНН: 360408359441
                        © 2026
                        политика конфиденциальности публичная оферта
                        • visa
                        • mastercard
                        • sber
                        • tpay