如何获得定制的帖子作者?

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

我有一个帖子类型,可以插入电子邮件作为帖子。我还根据这些电子邮件创建了用户。这就是我添加帖子类型的方式。

$post_array = array( 
                \'post_content\'  => $mail[\'body\'], 
                \'post_title\'    => $mail[\'header\']->subject,
                \'post_type\'     => \'my-post-type\',
                \'post_author\'   =>  $user_name,
                \'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\' => preg_replace(\'~[<]~\',\'\',strstr($mail[\'header\']->message_id, \'@\',true)),   
                    ),
                );
                    wp_insert_post( $post_array );
这就是我添加用户的方式:

if(email_exists($email)){
    add_post_meta($post_id, \'username\', $email, True);  
    add_post_meta($post_id, \'email\', $user, True);
 }
    else{
         $userdata = array(
        \'user_login\'    => ucwords(strstr($mail[\'header\']->fromaddress, \'<\',true)),
        \'user_pass\'     => \'\',
        \'user_nicename\' => ucwords(strstr($mail[\'header\']->fromaddress, \'<\',true)),   
        \'display_name\'  => ucwords(strstr($mail[\'header\']->fromaddress, \'<\',true)),
        \'user_email\'    => strstr($mail[\'header\']->fromaddress, \'<\'),
        \'role\'          => \'support_customer\',
    );
    wp_insert_user($userdata);
}
下面是我如何添加用户角色的代码:

$result= add_role(\'support_customer\', __(
    \'Support Customer\', \'faqpress\'),
array(
                    \'read\'         => true,  // true allows this capability
                    \'edit_posts\'   => true,
                    \'delete_posts\' => true, // Use false to explicitly deny
                    \'publish_posts\' => true,    
                ));
现在,我希望帖子的作者与我刚才创建的用户相同。我如何做到这一点?

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

看看你的if else块,我看到$post_id 变量,因此,如果您要将帖子的ID分配给正在创建的用户,那么您可以调用wp_update_post() 在您的else 块,即在创建用户之后。

所以只要更换wp_insert_user($userdata); 在您的代码中:

$user_id = wp_insert_user($userdata);

if ( ! is_wp_error( $user_id ) ) {
    wp_update_post( array(
        \'ID\'          => $post_id,
        \'post_author\' => $user_id,
    ) );
}

相关推荐

如何将函数应用于GET_USER_BY的值$EMAIL以覆盖EMAIL_EXISTS?

更精确的问题:如何覆盖email_exists 通过get_user_by ?我已选择从数据库中呈现不可用/不可读的电子邮件地址。在向管理员和用户(用户注册)发送电子邮件后,我向电子邮件地址添加了一些元素(字符),然后我必须删除这些添加的元素,以验证电子邮件是否存在,是否显示在用户帐户上,是否用于邮件列表。要解密电子邮件,我必须使用substr 关联值的位置$email 字段get_user_by 删除之前添加的元素。我读到了email_exists 使用get_user_by 这是一个可插入功能。但我不