wp_xmlrpc_server::wp_newPost( array $args )

Create a new post for any registered post type.



(Required) Method arguments. Note: top-level arguments must be ordered as documented.

  • 'blog_id'
    (int) Blog ID (unused).
  • 'username'
    (string) Username.
  • 'password'
    (string) Password.
  • 'content_struct'
    (array) Content struct for adding a new post. See wp_insert_post() for information on additional post fields
    • 'post_type'
      (string) Post type. Default 'post'.
    • 'post_status'
      (string) Post status. Default 'draft'
    • 'post_title'
      (string) Post title.
    • 'post_author'
      (int) Post author ID.
    • 'post_excerpt'
      (string) Post excerpt.
    • 'post_content'
      (string) Post content.
    • 'post_date_gmt'
      (string) Post date in GMT.
    • 'post_date'
      (string) Post date.
    • 'post_password'
      (string) Post password (20-character limit).
    • 'comment_status'
      (string) Post comment enabled status. Accepts 'open' or 'closed'.
    • 'ping_status'
      (string) Post ping status. Accepts 'open' or 'closed'.
    • 'sticky'
      (bool) Whether the post should be sticky. Automatically false if $post_status is 'private'.
    • 'post_thumbnail'
      (int) ID of an image to use as the post thumbnail/featured image.
    • 'custom_fields'
      (array) Array of meta key/value pairs to add to the post.
    • 'terms'
      (array) Associative array with taxonomy names as keys and arrays of term IDs as values.
    • 'terms_names'
      (array) Associative array with taxonomy names as keys and arrays of term names as values.
    • 'enclosure'
      (array) Array of feed enclosure data to add to post meta.
      • 'url'
        (string) URL for the feed enclosure.
      • 'length'
        (int) Size in bytes of the enclosure.
      • 'type'
        (string) Mime-type for the enclosure. }


(int|IXR_Error) Post ID on success, IXR_Error instance otherwise.


File: wp-includes/class-wp-xmlrpc-server.php

	public function wp_newPost( $args ) {
		if ( ! $this->minimum_args( $args, 4 ) )
			return $this->error;

		$this->escape( $args );

		$username       = $args[1];
		$password       = $args[2];
		$content_struct = $args[3];

		if ( ! $user = $this->login( $username, $password ) )
			return $this->error;

		// convert the date field back to IXR form
		if ( isset( $content_struct['post_date'] ) && ! ( $content_struct['post_date'] instanceof IXR_Date ) ) {
			$content_struct['post_date'] = $this->_convert_date( $content_struct['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 ( isset( $content_struct['post_date_gmt'] ) && ! ( $content_struct['post_date_gmt'] instanceof IXR_Date ) ) {
			if ( $content_struct['post_date_gmt'] == '0000-00-00 00:00:00' || isset( $content_struct['post_date'] ) ) {
				unset( $content_struct['post_date_gmt'] );
			} else {
				$content_struct['post_date_gmt'] = $this->_convert_date( $content_struct['post_date_gmt'] );

		/** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
		do_action( 'xmlrpc_call', 'wp.newPost' );

		unset( $content_struct['ID'] );

		return $this->_insert_post( $user, $content_struct );


Version Description
WP-3.4.0 Introduced.