如何在插入新帖子时选择帖子ID,例如:
$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);
想要插入ID = 3333的新帖子
答案 0 :(得分:16)
您可能想知道自己可以使用'import_id'
代替'ID'
而且会“尝试”并使用它。
请参阅此处的第二个示例:http://codex.wordpress.org/Function_Reference/wp_insert_post#Example
答案 1 :(得分:5)
抱歉伙计,不可行。以下是开发者在代码中所说的内容:
重要:为$ post ['ID']设置值不会创建具有该ID号的帖子。设置此值将导致该函数使用该ID号更新帖子,并使用$ post中指定的其他值。简而言之,要插入新帖子,$ post ['ID']必须为空或根本不设置。
http://codex.wordpress.org/Function_Reference/wp_insert_post
答案 2 :(得分:3)
这是我的简单解决方案:
//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' => 'sdfsfd fdsfds ds',
'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' => 'sdfsfd fdsfds ds',
'post_type' => 'post',
);
$post_id = wp_insert_post($post);
}
'ID'=> post_id将更新该帖子,而'import_id'=> post_id将创建一个具有该ID的新帖子。
您还可以循环并提供ID以运行多次插入/更新,而无需创建无限量的新帖子。
答案 3 :(得分:0)
可以这样做,而不是使用API的插入功能。您可以编写自己的INSERT查询。您总是希望尽可能使用API,但有时候这是不可能的。查询将如下所示:
global $wpdb;
$wpdb->query( $wpdb->prepare("
INSERT INTO {$wpdb->posts}
VALUES( %d, %d, NOW(), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), %s, %s, %d, %s, %d, %s, %s, %d )",
$ID,
$post_author,
$post_date_gmt,
$post_content,
$post_title,
$post_excerpt,
$post_status,
$comment_status,
$ping_status,
$post_password,
$post_name,
$to_ping,
$pinged,
$post_modified_gmt,
$post_content_filtered,
$post_parent,
$guid,
$menu_order,
$post_type,
$post_mime_type,
$comment_count
) );
您必须首先确保数据库中尚不存在该ID。如果将来发布表架构更改,您可能需要更新查询以考虑更改。
答案 4 :(得分:0)
正如daveaspinall所说。 我做了一个这样做的功能。
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 );
}
示例:
simpleImportPost('My Post 35',35,"35 Content");