如何获取`COMMENT_POST_ID`?

时间:2022-01-03 作者:Rohit kc

我已经提取了回复电子邮件。原始电子邮件保存为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 );
如果有人知道怎么做。这将是一个很大的帮助。

2 个回复
最合适的回答,由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 queryget_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 );
}

SO网友:Sébastien Serre

我可能被误解了,但您可以创建您的评论,感谢https://developer.wordpress.org/reference/functions/wp_insert_comment/ 它将在成功时返回comment\\u id。在参数中,可以传递原始邮件的post\\u idcomment_post_ID

相关推荐

Help with comments.php

我有一个带有短代码的页面,显示数据库中的信息。我已将其设置为允许在页面上发表评论。我遇到的问题是,当我单击“提交评论”时,我会收到以下消息:注意:事件中未定义索引:id。php在线989这一行从用户单击以访问此页面的链接中获取id,这很好。是否有方法通过注释传递此id。php页面以确保页面加载正常?以下是评论。php代码:if (have_comments()) { wp_list_comments(\'\'); } $comments_args = array(