how can I choose post ID, when inserting new post, ex:
$post = array(
'ID' => 3333,
'comment_status' => 'open',
'post_content' => 'hi world!',
'post_name' => 'title_1',
'post_status' => 'publish',
'post_title' => 'sdfsfd fdsfds ds',
'post_type' => 'post',
);
$post_id = wp_insert_post($post);
want to insert new post with id = 3333
Thought you might like to know you can use 'import_id'
instead of 'ID'
and it will "try" and use that.
See the second example here: http://codex.wordpress.org/Function_Reference/wp_insert_post#Example
Here is my simple solution:
//check if post with id 3333 is already in database, if so, update post 3333
if (get_post_status(3333) ) {
$post = array(
'ID' => 3333,
'comment_status' => 'open',
'post_content' => 'hi world!',
'post_name' => 'title_1',
'post_status' => 'publish',
'post_title' => 'your title',
'post_type' => 'post',
);
$post_id = wp_insert_post($post);
}
//if not in database, add post with id 3333
else {
$post = array(
'import_id' => 3333,
'comment_status' => 'open',
'post_content' => 'hi world!',
'post_name' => 'title_1',
'post_status' => 'publish',
'post_title' => 'your title',
'post_type' => 'post',
);
$post_id = wp_insert_post($post);
}
'ID'=> post_id will update that post, while 'import_id'=> post_id will create a new post with that id.
You can also loop through and feed the IDs to run multiple insertions/updates without the risk of creating an infinite amount of new posts.
Sorry buddy, not doable. Here is what the devs say at the codex:
IMPORTANT: Setting a value for $post['ID'] WILL NOT create a post with that ID number. Setting this value will cause the function to update the post with that ID number with the other values specified in $post. In short, to insert a new post, $post['ID'] must be blank or not set at all.
http://codex.wordpress.org/Function_Reference/wp_insert_post
As daveaspinall say. I do a function that do that.
require( 'wp-load.php' );
function simpleImportPost($title,$import_id,$content){
// Create post object
$my_post = array();
$my_post['post_title'] = $title;
$my_post['import_id']=$import_id;
$mypost['comment_status'] = 'closed';//I'll set all closed
$my_post['post_content'] = $content;
$my_post['post_status'] = 'publish';
$my_post['post_author'] = 1;
$my_post['post_category'] = array(0);
// Insert the post into the database
return wp_insert_post( $my_post );
}
example:
simpleImportPost('My Post 35',35,"35 Content");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With