使用新的帖子数据更新帖子。

原型

wp_update_post( array|object $postarr = array(), bool $wp_error = false )

描述

不必为草稿设置日期。你可以设置日期,但不会被覆盖。

参数

$postarr (array|object) (Optional)  发布数据。预期数组将被转义,而对象则不会被转义。默认数组。

$wp_error (bool) (Optional)  允许在失败时返回WP_Error。

返回值

(int|WP_Error)  值0或

源文件

路径:wp-includes/post.php

<?php
...
function wp_update_post( $postarr = array(), $wp_error = false ) {
	if ( is_object($postarr) ) {
		// Non-escaped post was passed.
		$postarr = get_object_vars($postarr);
		$postarr = wp_slash($postarr);
	}
	// First, get all of the original fields.
	$post = get_post($postarr['ID'], ARRAY_A);
	if ( is_null( $post ) ) {
		if ( $wp_error )
			return new WP_Error( 'invalid_post', __( 'Invalid post ID.' ) );
		return 0;
	}
	// Escape data pulled from DB.
	$post = wp_slash($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, $wp_error );
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/wp_update_post/