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.
$0intBlog ID (unused).$1stringUsername.$2stringPassword.$3intPost ID.$4arrayExtra 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:
- 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
- do_action()Calls the callback functions that have been added to an action hook.
- get_post()Retrieves post data given a post ID or post object.
- __()Retrieves the translation of $text.
- mysql2date()Converts given MySQL date string into a different format.
- wp_xmlrpc_server::minimum_args()Checks if the method received at least the minimum number of arguments.
- wp_xmlrpc_server::escape()Escapes string or array of strings for database.
- wp_xmlrpc_server::login()Logs user in.
- IXR_Error::__construct()PHP5 constructor.
- wp_xmlrpc_server::_convert_date()Converts a WordPress date string to an IXR_Date object.
- wp_xmlrpc_server::_insert_post()Helper method for wp_newPost() and wp_editPost(), containing shared logic.
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.
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.