Parameter | Description |
---|---|
$args (Array Required) | A Key Value Array of the below elements. |
$wp_error (Boolean Optional) | Return a WP_Error in case of failure. |
The next table shows you a list of elements that you can use inside of the first parameter (Array).
Parameter | Description |
---|---|
ID | (Int) The post ID. If equal to something other than 0, the post with that ID will be updated. Default 0. |
post_author | (Int) The ID of the user who added the post. Default is the current user ID. |
post_date | (String) The date of the post. Default is the current time. |
post_date_gmt | (String) The date of the post in the GMT timezone. Default is the value of $post_date. |
post_content | (Mixed) The post content. Default empty. |
post_content_filtered | (String) The filtered post content. Default empty. |
post_title | (String) The post title. Default empty. |
post_category | (Array) Array of post category values. |
post_excerpt (String) The post excerpt. Default empty. | |
post_status | (String) The post status. Default draft. |
post_type | (String) The post type. Default post. |
comment_status | (String) Whether the post can accept comments. Accepts open or closed. Default is the value of default_comment_status option. |
ping_status | (String) Whether the post can accept pings. Accepts open or closed. Default is the value of default_ping_status option. |
post_password | (String) The password to access the post. Default empty. |
post_name | (String) The post name or slug. Default is the sanitized post title when creating a new post. |
to_ping | (String) Space or carriage return-separated list of URLs to ping. Default empty. |
pinged | (String) Space or carriage return-separated list of URLs that have been pinged. Default empty. |
post_modified | (String) The date when the post was last modified. Default is the current time. |
post_modified_gmt | (String) The date when the post was last modified in the GMT timezone. Default is the current time. |
post_parent | (Int) Set this for the post it belongs to, if any. Default 0. |
menu_order | (Int) The order the post should be displayed in. Default 0. |
post_mime_type | (String) The mime type of the post. Default empty. |
guid | (String) Global Unique ID for referencing the post. Default empty. |
tax_input | (Array) Array of taxonomy terms keyed by their taxonomy name. Default empty. |
meta_input | (Array) Array of post meta values keyed by their post meta key. Default empty. |
When you execute this function, you could probably get a duplicated post, at least that happened to me. (You can check it into the Post WordPress Section)
I found a solution:
if( !get_page_by_title( $title, 'OBJECT', 'post' ) ){
$my_post = array('post_title' => $title,
'post_content' => 'Content',
'tags_input' => $tags,
'post_category' => array(2),
'post_status' => 'publish'
);
$result = wp_insert_post( $my_post );
}
Before you save a new post, validate if the new post already exists using the post title as a parameter, if there's not a post title, you can save your new post.
Check get_page_by_title's documentation here.