使用 wp_insert_post 为每个用户自动创建一个 post

Automatically create a post for each user using wp_insert_post

我希望在自定义 post 类型 ( jt_cpt_team ) 中为每个至少具有作者凭据的用户自动创建一个 post。

首先,它需要为管理员创建的每个新用户执行此操作。如果有一种简单的方法可以为每位现有作者 (~30) 生成 post,那就太好了,但如果需要,我不介意手动完成这些操作。

我猜这或多或少是我需要的——尽管努力让它工作……

class team_functions {

  public function __construct() {

    add_action('user_register', array($this, 'create_authors_page'));

  }

  public function create_authors_page($user_id) {

    $the_user      = get_userdata($user_id);
    $new_user_name = $the_user->user_login;
    $my_post       = array();
    $my_post['post_title']   = $new_user_name;
    $my_post['post_type']    = 'jt_cpt_team';
    $my_post['post_content'] = '';
    $my_post['post_status']  = 'publish';
    $my_post['post_theme']   = 'user-profile';

    wp_insert_post( $my_post );

  }

}

此外,如果有一种方法可以将作者的电子邮件添加为 custom_field,那就太棒了。

在此先感谢您的帮助:)

像这样的东西应该可以工作:

public function create_authors_page( $user_id ) {

    $the_user      = get_userdata( $user_id );
    $new_user_name = $the_user->user_login;
    $PostSlug      = $user_id;
    $PostGuid      = home_url() . "/" . $PostSlug;

    $my_post = array( 'post_title'   => $new_user_name,
                      'post_type'    => 'jt_cpt_team',
                      'post_content' => '',
                      'post_status'  => 'publish',
                      'post_theme'   => 'user-profile',
                      'guid'         => $PostGuid );

    $NewPostID = wp_insert_post( $my_post ); // Second parameter defaults to FALSE to return 0 instead of wp_error.

     // To answer your comment, adding these lines of code before the return should do it (Have not tested it though):
     $Key   = $new_user_name; // Name of the user is the custom field KEY
     $Value = $user_id; // User ID is the custom field VALUE
     update_post_meta( $NewPostID, $Key, $Value );

     return $NewPostID;
     }