カスタム投稿タイプの追加・ユーザー登録すると自動的にユーザー専用の非公開ページとリンクが作成される【WordPress】

メンバーを追加したら自動でそのメンバー専用ページ(カスタム投稿)が作られるようにした時のメモ。

STEP1:まずはカスタム投稿タイプを設定する。(function.php)

add_action( 'init', 'create_post_type' );
function create_post_type() {
    register_post_type( 'member', // 投稿タイプ名の定義
                       array(
                           'labels' => array(
                               'name' => __( '会員' ), // 表示する投稿タイプ名
                               'singular_name' => __( '会員' )
                           ),
                           'public' => true,
                           'show_in_rest' => true, // Gutenbergを有効にする
                           'menu_position' =>5,
                           'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields' ,'comments' ),
                       )
                      );

STEP2:ユーザー登録すると自動的に非公開ページが作成される(function.php)

function create_user_page ( $user_id ) {
    $user_info = get_userdata($user_id);
	$user_name = $user_info->user_login;
    $new_page = array(
        'post_type' => 'member',
        'post_title' => $user_name,
        'post_name' => $user_name,
        'post_status' => 'private', // ページは非公開にする
        'post_author' => $user_id,
    );
	wp_insert_post($new_page);
}
add_action('user_register', 'create_user_page' );

STEP3:そのページに自動的にリンクが貼られる(任意のテンプレート)

<a href="/member/<?php $user = wp_get_current_user();
         echo $user->get('user_login'); ?>/">リンクテキスト</a>