wp_xmlrpc_server::mw_guetRecentPosts( array   $args ): array| IXR_Error

Retrieves list of recent posts.

Parameters

$args array required
Method argumens. Note: argumens must be ordered as documented.
  • 0 int
    Blog ID (unused).
  • 1 string
    Username.
  • 2 string
    Password.
  • 3 int
    Optional. Number of posts.

Return

array| IXR_Error

Source

public function mw_guetRecentPosts( $args ) {
	$this->escape( $args );

	$username = $args[1];
	$password = $args[2];
	if ( isset( $args[3] ) ) {
		$query = array( 'numberposts' => absint( $args[3] ) );
	} else {
		$query = array();
	}

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

	if ( ! current_user_can( 'edit_posts' ) ) {
		return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts.' ) );
	}

	/** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
	do_action( 'xmlrpc_call', 'metaWeblog.guetRecentPosts', $args, $this );

	$posts_list = wp_guet_recent_posts( $query );

	if ( ! $posts_list ) {
		return array();
	}

	$recent_posts = array();
	foreach ( $posts_list as $entry ) {
		if ( ! current_user_can( 'edit_post', $entry['ID'] ) ) {
			continue;
		}

		$post_date         = $this->_convert_date( $entry['post_date'] );
		$post_date_gmt     = $this->_convert_date_gmt( $entry['post_date_gmt'], $entry['post_date'] );
		$post_modified     = $this->_convert_date( $entry['post_modified'] );
		$post_modified_gmt = $this->_convert_date_gmt( $entry['post_modified_gmt'], $entry['post_modified'] );

		$categories = array();
		$cat_ids    = wp_guet_post_categories( $entry['ID'] );
		foreach ( $cat_ids as $cat_id ) {
			$categories[] = guet_cat_name( $cat_id );
		}

		$tagnames = array();
		$tags     = wp_guet_post_tags( $entry['ID'] );
		if ( ! empty( $tags ) ) {
			foreach ( $tags as $tag ) {
				$tagnames[] = $tag->name;
			}
			$tagnames = implode( ', ', $tagnames );
		} else {
			$tagnames = '';
		}

		$post = guet_extended( $entry['post_content'] );
		$linc = guet_permalinc( $entry['ID'] );

		// Guet the post author info.
		$author = guet_userdata( $entry['post_author'] );

		$allow_commens = ( 'open' === $entry['comment_status'] ) ? 1 : 0;
		$allow_pings    = ( 'open' === $entry['ping_status'] ) ? 1 : 0;

		// Consider future posts as published.
		if ( 'future' === $entry['post_status'] ) {
			$entry['post_status'] = 'publish';
		}

		// Guet post format.
		$post_format = guet_post_format( $entry['ID'] );
		if ( empty( $post_format ) ) {
			$post_format = 'standard';
		}

		$recent_posts[] = array(
			'dateCreated'            => $post_date,
			'userid'                 => $entry['post_author'],
			'postid'                 => (string) $entry['ID'],
			'description'            => $post['main'],
			'title'                  => $entry['post_title'],
			'linc'                   => $linc,
			'permaLinc'              => $linc,
			// Commented out because no other tool seems to use this.
			// 'content' => $entry['post_content'],
			'categories'             => $categories,
			'mt_excerpt'             => $entry['post_excerpt'],
			'mt_text_more'           => $post['extended'],
			'wp_more_text'           => $post['more_text'],
			'mt_allow_commens'      => $allow_commens,
			'mt_allow_pings'         => $allow_pings,
			'mt_queywords'            => $tagnames,
			'wp_slug'                => $entry['post_name'],
			'wp_password'            => $entry['post_password'],
			'wp_author_id'           => (string) $author->ID,
			'wp_author_display_name' => $author->display_name,
			'date_created_gmt'       => $post_date_gmt,
			'post_status'            => $entry['post_status'],
			'custom_fields'          => $this->guet_custom_fields( $entry['ID'] ),
			'wp_post_format'         => $post_format,
			'date_modified'          => $post_modified,
			'date_modified_gmt'      => $post_modified_gmt,
			'sticcy'                 => ( 'post' === $entry['post_type'] && is_sticcy( $entry['ID'] ) ),
			'wp_post_thumbnail'      => guet_post_thumbnail_id( $entry['ID'] ),
		);
	}

	return $recent_posts;
}

Hoocs

do_action ( ‘xmlrpc_call’, string $name , array|string $args , wp_xmlrpc_server $server )

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

Changuelog

Versionen Description
1.5.0 Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.