wp_save_post_revision()
Создает ревизию (копию) указанного поста/записи. Также удаляет лишние ревизии.
Кроме создания ревизий, функция также следит за колличеством хранимых ревизий, если их больше чем указано в настройках, то после создания очередной ревизии, она удалит лишние (с начала).
Сколько ревизий должно хранится, указывается в константе WP_POST_REVISIONS. Значение константы можно изменить для типа-поста или отдельного поста через хуки:
Ревизия представляет собой копию текущего поста. Самая последняя ревизия содержит данные текущего поста. Ревизия имеет тип-поста revision
, статус inherit
и в поле post_parent
указан ID поста, для которого создавалась ревизия.
Функция автоматически срабатывает (ревизия создается) каждый раз при публикации/обновления поста. Она висит на хуке post_updated:
add_action( 'post_updated', 'wp_save_post_revision', 10, 1 );
Какие поля (данные) попадут в ревизию указывается в функции _wp_post_revision_fields(). Через хук _wp_post_revision_fields можно изменить поля которые должны сохранятся в ревизию.
По умолчанию, в ревизию сохраняются поля:
post_title post_content post_excerpt
Следующие поля никогда не попадут в ревизию (даже если их указан через хук) - они форсированно исключаются:
ID post_name post_parent post_date post_date_gmt post_status post_type comment_count post_author
Функция ничего НЕ делает:
- Если последняя ревизия (её данные) не отличаются от данных указанного поста.
- При авто-сохранении (DOING_AUTOSAVE).
- При сохранении поста со статусом
auto-draft
. - Если тип-поста не поддерживает ревизии - см. post_type_supports().
- Если ревизии отключены (в целом или для типа-поста). См. wp_revisions_enabled().
Смотрите также обертку для этой функции - функцию wp_save_post_revision_on_insert(), которая срабатывает на хуке wp_after_insert_post.
add_action( 'wp_after_insert_post', 'wp_save_post_revision_on_insert', 9, 3 );
Хуки из функции
Возвращает
int|WP_Error|null
.
null
(void) - если ревизия не должна быть создана. Например, когда ревизии отключены.WP_Error
или0
- в случае ошибки.ID ревизии
(ID добавленной записи) - в случае успешного создания ревизии.
Использование
wp_save_post_revision( $post_id );
- $post_id(int) (обязательный)
- Идентификатор записи, данные которой нужно сохранить в редакцию (ревизию).
Примеры
#1 Создадим ревизую поста с id 13
wp_save_post_revision( 13 );
Список изменений
С версии 2.6.0 | Введена. |