Как использовать функцию WP_GET_POST_REVISION() в WordPress 2.6.0

WP_GET_POST_REVISION() │ WP 2.6.0

Функция WP_GET_POST_REVISION позволяет получить ревизию поста по её ID. Если такая ревизия отсутствует, функция возвращает null.

Ревизии — это посты с типом post_type = revision.

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

  • Использует: get_post()
  • Вызывается: wp_is_post_autosave(), wp_is_post_revision()
  • Время выполнения: 1 раз — 0.000602 сек (медленно), 50000 раз — 1.12 сек (быстро)

Возврат

Функция может возвращать:

  • WP_Post | Array | null:
    • WP_Post на успех, если $output = OBJECT.
    • Array на успех, если $output = ARRAY_A или ARRAY_N.
    • null при ошибке (если ревизия не существует).

Параметры

wp_get_post_revision( $post, $output, $filter );

  • $post (int | WP_Post) (обязательный) – ID поста или объект поста.

  • $output (string) – Как вернуть данные:

    • OBJECT — возвращает объект WP_Post.
    • ARRAY_A — возвращает ассоциативный массив.
    • ARRAY_N — возвращает числовой массив.

    По умолчанию: OBJECT

  • $filter (string) – Дополнительный фильтр для очистки. Смотрите sanitize_post_field().

    По умолчанию: 'raw'

Примеры

Пример 1: Получение объекта WP_Post, представляющего ревизию

$revision_id = 15;
$revision = wp_get_post_revision($revision_id);

if ($revision) {
    // Да, это ревизия
    print_r($revision);
}

Результат:

WP_Post Object
(
    [ID] => 1008
    [post_author] => 1
    [post_date] => 2015-08-26 19:15:42
    [post_date_gmt] => 2015-08-26 15:15:42
    [post_content] => Content
    [post_title] => Основные способы обучения
    [post_excerpt] => 
    [post_status] => inherit
    [comment_status] => closed
    [ping_status] => closed
    [post_password] => 
    [post_name] => 997-revision-v1
    [to_ping] => 
    [pinged] => 
    [post_modified] => 2015-08-26 19:15:42
    [post_modified_gmt] => 2015-08-26 15:15:42
    [post_content_filtered] => 
    [post_parent] => 997
    [guid] => http://example.com/997-revision-v1/
    [menu_order] => 0
    [post_type] => revision
    [post_mime_type] => 
    [comment_count] => 0
    [filter] => raw
)

��ример 2: Проверка, является ли пост ревизией

Этот код демонстрирует, как проверить, является ли пост ревизией:

function wp_is_post_revision($post) {
    if (!$post = wp_get_post_revision($post)) {
        return false;
    }
    return (int) $post->post_parent;
}

Изменения

  • С версии 2.6.0 – Функция была введена.

Код функции

function wp_get_post_revision(&$post, $output = OBJECT, $filter = 'raw') {
    $revision = get_post($post, OBJECT, $filter);

    if (!$revision) {
        return $revision;
    }

    if ('revision' !== $revision->post_type) {
        return null;
    }

    if (OBJECT === $output) {
        return $revision;
    } elseif (ARRAY_A === $output) {
        $_revision = get_object_vars($revision);
        return $_revision;
    } elseif (ARRAY_N === $output) {
        $_revision = array_values(get_object_vars($revision));
        return $_revision;
    }

    return $revision;
}

Теперь вы знаете, как использовать функцию wp_get_post_revision() для работы с ревизиями постов в WordPress. Если у вас есть вопросы, не стесняйтесь задавать их!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *