Do you actually insert the comments right after you created the CPT post?
I.e. Both the snippets in the question are in the same scope, e.g. wp_insert_post( $post_array ); for($j = 1; $j <= $total; $j++){ ... wp_insert_comment($comment_array); ... }
.
If yes, then you can store the post ID returned by wp_insert_post()
to a variable and then just use that variable with the comment_post_ID
in your comment’s arguments. E.g.
$post_id = wp_insert_post( $post_array );
And then in the $comment_array
, just use 'comment_post_ID' => $post_id
.
But if the snippets run in different PHP session/execution, and if the post meta named ticket_id
is unique for each post in your CPT, then you can use the WordPress meta query and get_posts()
to get the post that references the original email.
So for example,
$posts = get_posts( array(
'post_type' => 'faqpress-tickets',
'meta_key' => 'ticket_id',
'meta_value' => $mail['header']->message_id,
) );
if ( ! empty( $posts ) ) {
$comment_array = array(
'comment_content' => $mail['body'],
'comment_post_ID' => $posts[0]->ID,
);
wp_insert_comment( $comment_array );
}