7

新しい投稿を挿入するときに、投稿 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 の新しい投稿を挿入したい

4

5 に答える 5

23

'import_id'代わりに使用できることを知りたいと思うかもしれませんが'ID'、それを「試して」使用します。

ここで2番目の例を参照してください:http://codex.wordpress.org/Function_Reference/wp_insert_post#Example

于 2011-11-16T15:16:28.663 に答える
8

これが私の簡単な解決策です:

//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 はその投稿を更新し、'import_id'=> post_id はその ID で新しい投稿を作成します。

また、無限の量の新しい投稿を作成するリスクなしに、ID をループしてフィードし、複数の挿入/更新を実行することもできます。

于 2016-03-16T11:30:05.080 に答える
2

申し訳ありませんが、実行できません。コーデックスで開発者が言っていることは次のとおりです。

重要: $post['ID'] に値を設定しても、その ID 番号の投稿は作成されません。この値を設定すると、関数はその ID 番号の投稿を $post で指定された他の値で更新します。つまり、新しい投稿を挿入するには、$post['ID'] を空白にするか、まったく設定しない必要があります。

http://codex.wordpress.org/Function_Reference/wp_insert_post

于 2011-07-02T16:49:07.027 に答える
1

daveaspinalが言うように。私はそれを行う機能を実行します。

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");
于 2013-06-03T12:54:24.427 に答える
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 がデータベースにまだ存在していないことを確認する必要があります。将来、ポスト テーブル スキーマが変更された場合は、変更を考慮してクエリを更新する必要がある場合があります。

于 2011-10-12T22:52:14.820 に答える