使用 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;
}
我希望在自定义 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;
}