wp_update_post()

Обновляет запись новыми данными о записи
Функция WordPress
INT 1.0.0
WordPress Icon

Описание функции

Функция wp_update_post() используется для обновления поста с новыми данными.

Функция принимает массив или объект $postarr с данными поста, а также два необязательных параметра: $wp_error и $fire_after_hooks.

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

wp_update_post( array|object $postarr = array(), bool $wp_error = false, bool $fire_after_hooks = true ) : int|WP_Error

Возвращает ID поста в случае успеха или значение 0 или объект WP_Error в случае ошибки.

  • $postarr (array|object) (необязательный) — Массив или объект с данными поста. Ожидается, что массивы будут экранированы, а объекты — нет. См. функцию wp_insert_post() для принимаемых аргументов. По умолчанию пустой массив.
  • $wp_error (bool) (необязательный) — Определяет, должен ли возвращаться объект WP_Error в случае ошибки. По умолчанию false.
  • $fire_after_hooks (bool) (необязательный) — Определяет, должны ли срабатывать хуки после обновления поста. По умолчанию true.

Функция возвращает ID поста в случае успеха или значение 0 или объект WP_Error в случае ошибки.

<?php
// Обновление поста с ID 42
$postarr = array(
  'ID' => 42,
  'post_title' => 'Новый заголовок',
  'post_content' => 'Новый контент',
  'post_status' => 'publish'
);
$result = wp_update_post( $postarr );
if ( $result instanceof WP_Error ) {
  // Обработка ошибки
  $error_message = $result->get_error_message();
  echo "Ошибка при обновлении поста: " . $error_message;
} else {
  // Успешное обновление
  echo "Пост успешно обновлен. ID: " . $result;
}
?>

В данном примере мы обновляем пост с ID 42, меняя его заголовок, контент и статус на «опубликован».

Примеры использования

Обновление заголовка поста


// Создаем массив с данными для обновления поста
$postarr = array(
    'ID' => 123, // ID поста, который нужно обновить
    'post_title' => 'Новый заголовок', // Новый заголовок поста
);
// Вызываем функцию wp_update_post() для обновления поста
$result = wp_update_post($postarr);
// Проверяем результат обновления поста
if (!is_wp_error($result)) {
    echo 'Заголовок поста успешно обновлен.';
} else {
    echo 'Ошибка при обновлении заголовка поста: ' . $result->get_error_message();
}

Изменение статуса поста


// Создаем массив с данными для обновления поста
$postarr = array(
    'ID' => 123, // ID поста, который нужно обновить
    'post_status' => 'publish', // Новый статус поста (опубликован)
);
// Вызываем функцию wp_update_post() для обновления поста
$result = wp_update_post($postarr);
// Проверяем результат обновления поста
if (!is_wp_error($result)) {
    echo 'Статус поста успешно изменен.';
} else {
    echo 'Ошибка при изменении статуса поста: ' . $result->get_error_message();
}

Установка даты публикации поста


// Создаем массив с данными для обновления поста
$postarr = array(
    'ID' => 123, // ID поста, который нужно обновить
    'post_date' => '2022-01-01 12:00:00', // Новая дата публикации поста
);
// Вызываем функцию wp_update_post() для обновления поста
$result = wp_update_post($postarr);
// Проверяем результат обновления поста
if (!is_wp_error($result)) {
    echo 'Дата публикации поста успешно изменена.';
} else {
    echo 'Ошибка при изменении даты публикации поста: ' . $result->get_error_message();
}

Добавление мета-данных к посту


// Создаем массив с данными для обновления поста
$postarr = array(
    'ID' => 123, // ID поста, к которому нужно добавить мета-данные
    'meta_input' => array(
        'key1' => 'value1', // Ключ и значение первого мета-поля
        'key2' => 'value2', // Ключ и значение второго мета-поля
    ),
);
// Вызываем функцию wp_update_post() для обновления поста
$result = wp_update_post($postarr);
// Проверяем результат обновления поста
if (!is_wp_error($result)) {
    echo 'Мета-данные успешно добавлены к посту.';
} else {
    echo 'Ошибка при добавлении мета-данных к посту: ' . $result->get_error_message();
}

Изменение категории поста


// Создаем массив с данными для обновления поста
$postarr = array(
    'ID' => 123, // ID поста, который нужно обновить
    'post_category' => array(1, 2), // Массив с ID категорий, к которым принадлежит пост
);
// Вызываем функцию wp_update_post() для обновления поста
$result = wp_update_post($postarr);
// Проверяем результат обновления поста
if (!is_wp_error($result)) {
    echo 'Категория поста успешно изменена.';
} else {
    echo 'Ошибка при изменении категории поста: ' . $result->get_error_message();
}

Вопросы и ответы

Как обновить пост с новыми данными?

Функция wp_update_post() позволяет обновить пост с новыми данными. Для этого необходимо передать массив или объект с новыми данными в качестве параметра $postarr. Этот параметр является необязательным и по умолчанию равен пустому массиву.

Пример использования:


$post_id = 123;
$post_data = array(
    'post_title' => 'Новый заголовок',
    'post_content' => 'Новый контент',
);
wp_update_post($post_data, $post_id);

Как указать ID поста, который нужно обновить?

Для указания ID поста, который нужно обновить, необходимо передать его в качестве параметра $postarr['ID']. Если параметр $postarr['ID'] не указан или равен 0, будет создан новый пост.

Пример использования:


$post_id = 123;
$post_data = array(
    'ID' => $post_id,
    'post_title' => 'Новый заголовок',
    'post_content' => 'Новый контент',
);
wp_update_post($post_data);

Как указать автора поста при обновлении?

По умолчанию, автором поста при обновлении будет текущий пользователь. Можно указать другого автора, передав его ID в качестве параметра $postarr['post_author'].

Пример использования:


$post_id = 123;
$post_data = array(
    'ID' => $post_id,
    'post_title' => 'Новый заголовок',
    'post_content' => 'Новый контент',
    'post_author' => 5,
);
wp_update_post($post_data);

Как указать дату поста при обновлении?

Для указания даты поста при обновлении используется параметр post_date. По умолчанию, если этот параметр не указан, будет использоваться текущая дата и время.

Пример кода:


$postarr = array(
    'ID' => 123, // ID поста, который нужно обновить
    'post_date' => '2022-01-01 12:00:00' // Новая дата и время
);
wp_update_post( $postarr );

Как указать контент поста при обновлении?

Для указания контента поста при обновлении используется параметр post_content. По умолчанию, если этот параметр не указан, контент будет пустым.

Пример кода:


$postarr = array(
    'ID' => 123, // ID поста, который нужно обновить
    'post_content' => 'Новый контент поста' // Новый контент
);
wp_update_post( $postarr );

Как указать заголовок поста при обновлении?

Для указания заголовка поста при обновлении используется параметр post_title. По умолчанию, если этот параметр не указан, заголовок будет пустым.

Пример кода:


$postarr = array(
    'ID' => 123, // ID поста, который нужно обновить
    'post_title' => 'Новый заголовок поста' // Новый заголовок
);
wp_update_post( $postarr );

Как указать статус поста при обновлении?

Для указания статуса поста при обновлении используется параметр $postarr['post_status']. Этот параметр принимает строковое значение, которое определяет статус поста. По умолчанию, если параметр не указан, статус будет установлен в ‘draft’.


// Пример указания статуса поста при обновлении
$postarr = array(
    'ID' => 1,
    'post_status' => 'publish'
);
wp_update_post( $postarr );

Как указать тип поста при обновлении?

Для указания типа поста при обновлении используется параметр $postarr['post_type']. Этот параметр принимает строковое значение, которое определяет тип поста. По умолчанию, если параметр не указан, тип будет установлен в ‘post’.


// Пример указания типа поста при обновлении
$postarr = array(
    'ID' => 1,
    'post_type' => 'page'
);
wp_update_post( $postarr );

Как указать категории и теги поста при обновлении?

Для указания категорий и тегов поста при обновлении используются параметры $postarr['post_category'] и $postarr['tags_input']. Параметр $postarr['post_category'] принимает массив с ID категорий, а параметр $postarr['tags_input'] принимает массив с названиями тегов.


// Пример указания категорий и тегов поста при обновлении
$postarr = array(
    'ID' => 1,
    'post_category' => array( 1, 2, 3 ),
    'tags_input' => array( 'tag1', 'tag2', 'tag3' )
);
wp_update_post( $postarr );

Функция wp_update_post() позволяет обновить пост с новыми данными. Она принимает массив или объект с данными поста, возвращает ID поста при успешном обновлении и 0 или WP_Error в случае ошибки. При обновлении поста можно указать статус, тип, категории и теги. Эта функция является важным инструментом для разработчиков WordPress, позволяющим управлять постами программно.

Связанные элементы

  • Функция wp_insert_post(): Вставляет новую запись в базу данных.
  • Функция wp_publish_post(): Публикует запись с заданным ID.
  • Функция wp_delete_post(): Удаляет запись с заданным ID.
  • Функция wp_trash_post(): Перемещает запись в корзину.
  • Функция wp_untrash_post(): Восстанавливает запись из корзины.
  • Функция wp_set_post_terms(): Устанавливает термины (категории или метки) для заданной записи.
  • Функция wp_get_post_terms(): Возвращает термины (категории или метки) для заданной записи.
  • Функция wp_get_post_revisions(): Возвращает список ревизий для заданной записи.
  • Функция wp_get_post_parent_id(): Возвращает ID родительской записи для заданной записи.
  • Хук pre_post_update: Вызывается перед обновлением записи.
Обсуждение