Описание
Обновляет запись (пост) в Базе Данных WordPress.
Для того, чтобы функция сработала так как нам нужно, необходимо указать идентификатор (ID) поста.
Если ревизии записей не выключены, при обновлении, старые данные не удаляются, а копируются как ревизия записи. При этом все связи у основной записи с произвольными полями, категориями, метками сохраняются.
Функция возвращает ID обновленной записи, при удачной операции или 0, если обновить запись не удалось.
Использование
<?php wp_update_post( $post ); ?>
Параметры
По умолчанию: пустой массив
Примеры
Перед тем как использовать функцию нужно собрать массив данных, который затем передать в качестве параметра. Массив должен содержать те данные которые мы хотим обновить. Отличие этой функции от wp_insert_post() в том, что здесь нет необходимости передавать все данные, можно указать только те которые нужно обновить, остальные данные будут скопированы из уже имеющихся в Базе Данных.
1. Обновим контент у записи 37:
// Создаем массив данных $my_post = array(); $my_post['ID'] = 37; $my_post['post_content'] = 'Здесь новый контент записи'; // Обновляем данные в БД wp_update_post( $my_post );
На заметку
- Использует: wp_restore_post_revision()
wp_update_post()
из файла: /wp-includes/post.php WP 3.3.2function wp_update_post($postarr = array()) {
if ( is_object($postarr) ) {
// non-escaped post was passed
$postarr = get_object_vars($postarr);
$postarr = add_magic_quotes($postarr);
}
// First, get all of the original fields
$post = wp_get_single_post($postarr['ID'], ARRAY_A);
// Escape data pulled from DB.
$post = add_magic_quotes($post);
// Passed post category list overwrites existing category list if not empty.
if ( isset($postarr['post_category']) && is_array($postarr['post_category'])
&& 0 != count($postarr['post_category']) )
$post_cats = $postarr['post_category'];
else
$post_cats = $post['post_category'];
// Drafts shouldn't be assigned a date unless explicitly done so by the user
if ( isset( $post['post_status'] ) && in_array($post['post_status'], array('draft', 'pending', 'auto-draft')) && empty($postarr['edit_date']) &&
('0000-00-00 00:00:00' == $post['post_date_gmt']) )
$clear_date = true;
else
$clear_date = false;
// Merge old and new fields with new fields overwriting old ones.
$postarr = array_merge($post, $postarr);
$postarr['post_category'] = $post_cats;
if ( $clear_date ) {
$postarr['post_date'] = current_time('mysql');
$postarr['post_date_gmt'] = '';
}
if ($postarr['post_type'] == 'attachment')
return wp_insert_attachment($postarr);
return wp_insert_post($postarr);
}Ещё из раздела
Смотрите также: Функции WordPress и Теги Шаблона.