Il est possible de le faire, mais pas avec la fonction d'insertion de l'API. Vous pouvez écrire votre propre requête INSERT à la place. Vous voulez toujours utiliser l'API quand vous le pouvez, mais parfois ce n'est pas possible. La requête devrait ressembler à ceci:
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
));
Vous devrez d'abord vous assurer que l'ID n'existe pas déjà dans la base de données. Si le schéma de table post change à l'avenir, vous devrez peut-être mettre à jour la requête pour prendre en compte les modifications.
'id' est un champ primaire d'incrémentation automatique dans la base de données. Je ne pense pas que tu puisses faire ça. Pourquoi voulez-vous exactement cela? – Dogbert
J'ai aussi une situation où cela est nécessaire. Je migre des milliers de messages personnalisés d'un autre site, chacun avec une taxonomie et des métadonnées. En définissant l'ID poste sur le même que l'ancien site, il est beaucoup plus facile d'importer le reste des données. J'ai été capable d'utiliser 'import_id' avec succès, comme suggéré par @daveaspinall ci-dessous – Astrotim