wp_get_post_revisions_url()WP 5.9.0

Получает URL страницы ревизий записи, где можно посмотреть изменения и при необходимости восстановить одну из ревизий.

Функция принимает ID записи или объект WP_Post. Если параметр не передан, используется текущая глобальная запись.

Если переданная запись уже является ревизией, будет возвращена ссылка на редактирование этой ревизии. Если запись не найдена, ревизии для неё отключены или у записи ещё нет ревизий, функция вернёт null.

Также важно учитывать, что URL создаётся через get_edit_post_link(), поэтому результат зависит от прав текущего пользователя на редактирование записи.

Работает на основе: get_edit_post_link(), wp_revisions_enabled()

Хуков нет.

Возвращает

Строку|null.

  • строку — URL страницы редактирования последней ревизии записи.
  • null — если ссылку получить нельзя.

Использование

wp_get_post_revisions_url( $post );
$post(int|WP_Post)
ID записи или объект записи.
По умолчанию: 0 — текущая глобальная запись.

Примеры

0

#1 Получение ссылки на ревизии записи

Получим URL страницы ревизий для записи с ID 25.

$revisions_url = wp_get_post_revisions_url( 25 );

if ( $revisions_url ) {
	echo '<a href="' . esc_url( $revisions_url ) . '">Посмотреть ревизии</a>';
}
0

#2 Получение ссылки на ревизии текущей записи

Если код выполняется внутри цикла WordPress, параметр можно не передавать.

$revisions_url = wp_get_post_revisions_url();

if ( null === $revisions_url ) {
	return;
}

echo '<a href="' . esc_url( $revisions_url ) . '">История изменений</a>';
0

#3 Проверка наличия ссылки перед выводом

Функция может вернуть null, поэтому перед выводом ссылки лучше всегда проверять результат.

$post_id       = get_the_ID();
$revisions_url = wp_get_post_revisions_url( $post_id );

if ( ! $revisions_url ) {
	echo 'Для этой записи нет доступных ревизий.';
	return;
}

echo '<a href="' . esc_url( $revisions_url ) . '">Открыть ревизии</a>';

Список изменений

С версии 5.9.0 Введена.

Код wp_get_post_revisions_url() WP 7.0

function wp_get_post_revisions_url( $post = 0 ) {
	$post = get_post( $post );

	if ( ! $post instanceof WP_Post ) {
		return null;
	}

	// If the post is a revision, return early.
	if ( 'revision' === $post->post_type ) {
		return get_edit_post_link( $post );
	}

	if ( ! wp_revisions_enabled( $post ) ) {
		return null;
	}

	$revisions = wp_get_latest_revision_id_and_total_count( $post->ID );

	if ( is_wp_error( $revisions ) || 0 === $revisions['count'] ) {
		return null;
	}

	return get_edit_post_link( $revisions['latest_id'] );
}