我已经提取了回复电子邮件。原始电子邮件保存为CPT,并在我的插件中作为票据使用。我希望回复邮件作为对原始邮件的评论。
for($j = 1; $j <= $total; $j++){
$mail = $emails->get($j);
//This checks if the email is reply or not and if the email is reply make it comment to its original post.
if ((!empty($mail[\'header\']->references )) && ($mail[\'header\']->references ) == ($mail[\'header\']->message_id )
{
$comment_array = array(
\'comment_content\' => $mail[\'body\'],
\'comment_post_ID\' => ,
)
wp_insert_comment($comment_array);
}
}
我区分了回复电子邮件和原始电子邮件,但我不知道如何将这些电子邮件保留为原始电子邮件的评论。这就是我
wp_insert_post
看起来像:
$post_array = array(
\'post_content\' => $mail[\'body\'],
\'post_title\' => $mail[\'header\']->subject,
\'post_type\' => \'faqpress-tickets\',
\'post_author\' => ucwords(strstr($mail[\'header\']->fromaddress, \'<\',true)),
\'post_status\' => \'publish\',
\'meta_input\' => array(
\'User\' => ucwords(strstr($mail[\'header\']->fromaddress, \'<\',true)),
\'From\' => preg_replace(\'~[<>]~\', \'\', strstr($mail[\'header\']->fromaddress, \'<\')),
\'Email\' => $mail[\'header\']->Date,
\'ticket_id\' => $mail[\'header\']->message_id,
),
);
//wp_insert_post( $post_array );
如果有人知道怎么做。这将是一个很大的帮助。
最合适的回答,由SO网友:Sally CJ 整理而成
你真的在创建CPT帖子后立即插入评论吗?
一、 e.问题中的两个片段都在同一范围内,例如。wp_insert_post( $post_array ); for($j = 1; $j <= $total; $j++){ ... wp_insert_comment($comment_array); ... }
.
如果是,则可以存储wp_insert_post()
,然后将该变量与comment_post_ID
在你评论的论点中。例如。
$post_id = wp_insert_post( $post_array );
然后在
$comment_array
, 仅使用
\'comment_post_ID\' => $post_id
.
但是如果代码段在不同的PHP会话/执行中运行,并且如果ticket_id
对于您的CPT中的每个帖子都是唯一的,那么您可以使用WordPressmeta query 和get_posts()
获取引用原始电子邮件的帖子。
例如,
$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 );
}