wppaste
WordPress

wp_xmlrpc_server::wp_editPost( array $args ): true|IXR_Error

Since
3.4.0
Source
wp-includes/class-wp-xmlrpc-server.php:1749
Edits a post for any registered post type.

Description

The $content_struct parameter only needs to contain fields that should be changed. All other fields will retain their existing values.

Parameters

$argsarray
Method arguments. Note: arguments must be ordered as documented.
  • $0int

    Blog ID (unused).
  • $1string

    Username.
  • $2string

    Password.
  • $3int

    Post ID.
  • $4array

    Extra content arguments.

Return

true|IXR_Error
True on success, IXR_Error on failure.

Hooks fired · 1

One hook fires while wp_xmlrpc_server::wp_editPost() runs, in this order:

  1. do_action( xmlrpc_call )actionline 1767 (+18 into the body)

    Fires after the XML-RPC user has been authenticated but before the rest of the method logic begins.

Uses · 10

Source

	public function wp_editPost( $args ) {		if ( ! $this->minimum_args( $args, 5 ) ) {			return $this->error;		} 		$this->escape( $args ); 		$username       = $args[1];		$password       = $args[2];		$post_id        = (int) $args[3];		$content_struct = $args[4]; 		$user = $this->login( $username, $password );		if ( ! $user ) {			return $this->error;		} 		/** This action is documented in wp-includes/class-wp-xmlrpc-server.php */		do_action( 'xmlrpc_call', 'wp.editPost', $args, $this ); 		$post = get_post( $post_id, ARRAY_A ); 		if ( empty( $post['ID'] ) ) {			return new IXR_Error( 404, __( 'Invalid post ID.' ) );		} 		if ( isset( $content_struct['if_not_modified_since'] ) ) {			// If the post has been modified since the date provided, return an error.			if ( mysql2date( 'U', $post['post_modified_gmt'] ) > $content_struct['if_not_modified_since']->getTimestamp() ) {				return new IXR_Error( 409, __( 'There is a revision of this post that is more recent.' ) );			}		} 		// Convert the date field back to IXR form.		$post['post_date'] = $this->_convert_date( $post['post_date'] ); 		/*		 * Ignore the existing GMT date if it is empty or a non-GMT date was supplied in $content_struct,		 * since _insert_post() will ignore the non-GMT date if the GMT date is set.		 */		if ( '0000-00-00 00:00:00' === $post['post_date_gmt'] || isset( $content_struct['post_date'] ) ) {			unset( $post['post_date_gmt'] );		} else {			$post['post_date_gmt'] = $this->_convert_date( $post['post_date_gmt'] );		} 		/*		 * If the API client did not provide 'post_date', then we must not perpetuate the value that		 * was stored in the database, or it will appear to be an intentional edit. Conveying it here		 * as if it was coming from the API client will cause an otherwise zeroed out 'post_date_gmt'		 * to get set with the value that was originally stored in the database when the draft was created.		 */		if ( ! isset( $content_struct['post_date'] ) ) {			unset( $post['post_date'] );		} 		$this->escape( $post );		$merged_content_struct = array_merge( $post, $content_struct ); 		$retval = $this->_insert_post( $user, $merged_content_struct );		if ( $retval instanceof IXR_Error ) {			return $retval;		} 		return true;	}

History

Introduced in 3.4.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 7.1.0 tag, from src/wp-includes/class-wp-xmlrpc-server.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.