使用$ _POST信息从“Write Post”表单创建一个新帖子。

原型

wp_write_post()

返回值

(int|WP_Error)  

源文件

路径:wp-admin/includes/post.php

<?php
...
function wp_write_post() {
	if ( isset($_POST['post_type']) )
		$ptype = get_post_type_object($_POST['post_type']);
	else
		$ptype = get_post_type_object('post');
	if ( !current_user_can( $ptype->cap->edit_posts ) ) {
		if ( 'page' == $ptype->name )
			return new WP_Error( 'edit_pages', __( 'Sorry, you are not allowed to create pages on this site.' ) );
		else
			return new WP_Error( 'edit_posts', __( 'Sorry, you are not allowed to create posts or drafts on this site.' ) );
	}
	$_POST['post_mime_type'] = '';
	// Clear out any data in internal vars.
	unset( $_POST['filter'] );
	// Edit don't write if we have a post id.
	if ( isset( $_POST['post_ID'] ) )
		return edit_post();
	if ( isset($_POST['visibility']) ) {
		switch ( $_POST['visibility'] ) {
			case 'public' :
				$_POST['post_password'] = '';
				break;
			case 'password' :
				unset( $_POST['sticky'] );
				break;
			case 'private' :
				$_POST['post_status'] = 'private';
				$_POST['post_password'] = '';
				unset( $_POST['sticky'] );
				break;
		}
	}
	$translated = _wp_translate_postdata( false );
	if ( is_wp_error($translated) )
		return $translated;
	// Create the post.
	$post_ID = wp_insert_post( $_POST );
	if ( is_wp_error( $post_ID ) )
		return $post_ID;
	if ( empty($post_ID) )
		return 0;
	add_meta( $post_ID );
	add_post_meta( $post_ID, '_edit_last', $GLOBALS['current_user']->ID );
	// Now that we have an ID we can fix any attachment anchor hrefs
	_fix_attachment_links( $post_ID );
	wp_set_post_lock( $post_ID );
	return $post_ID;
}
...
?>

其他

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