@sk8er_boi

Wordpress не сохраняет исходную редакцию записи?

Из фронтенда ф-цией wp_insert_post() добавляю новую запись, указывая в массиве аргументов 'post_content' => '[1540980416]', где цифры - текущее время Unix. Обновляю запись оттуда же той же ф-цией, уже указывая ID (при этом 'post_content' перезаписывается). Однако исходной редакии не остаётся. По шагам:

  1. Создаю запись ('post_content' => '[1540980416]');
  2. Изменяю ('post_content' => '[1540980488]', 'ID' => 416); // запись изменяется, пред. редакции нет
  3. Снова изменяю ('post_content' => '[1540980562]', 'ID' => 416); // запись изменяется, пред. редакция есть, исходной нет.
Замечания:

  • Если создаю запись из фронтенда, а затем редактирую из админки, та же история;
  • Если создаю запись из админки и изменяю, исходная редакция есть, но перед публикацией WP успевает сохранить черновик моей ещё неопубликованной записи.


В принципе, конечно, вопрос решается циклом из сохранения записи в кач-ве черновика (wp_insert_post() вернёт ID) и тут же обновления до "Опубликовано", но как-то не по фен-шую так делать. Хотя конструкция такого типа прокатывает:

$inserted_post = wp_insert_post(
	array(
		'post_title' => [post_title],
		'post_name' => [post_name],
		'post_content' => [1540230966],
		'post_status' => 'draft',
		'post_category' => array([post_category]),
		'post_author' => [user_ID]
	)
);
if ($inserted_post) {
	$updated_post = wp_insert_post(
		array(
			'ID' => $inserted_post,
			'post_title' => [post_title],
			'post_name' => [post_name],
			'post_content' => [1540230966],
			'post_status' => 'publish',
			'post_category' => array([post_category]),
			'post_author' => [user_ID]
		)
	);
	if ($updated_post) {
		//
	}
}
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
@sk8er_boi Автор вопроса
Заглянул в базу, и всё прояснилось.

При публикации поста через админ-панель добавляется запись с ID, например, 416 (статус - 'publish'). Вслед за ней новая с ID 417, и эта новая запись есть ревизия записи 416 (статус - 'inherit').

При вставке записи напрямую (wp_insert_post()) запись с ID 417 не появится.

Используя хук выше, получим при первом сохранении (статус - 'draft') запись с ID 416. При обновлении (статус - 'publish') появится та самая запись с ID 417 (ревизия, статус - 'inherit'), а статус записи 416 изменится, соотв-но, на 'publish'.

Всем спасибо, вопросов нет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы