如何在 WordPress 註冊會員時自動建立自訂文章類型

在 WordPress 網站中,我們有時會希望當新會員註冊時,自動建立一篇專屬於該會員的文章,例如成員介紹頁面。本篇教學將說明如何使用 user_register Hook 來自動建立 member_info 自訂文章類型(Custom Post Type, CPT),並設定特定的內容與 ACF(Advanced Custom Fields)欄位。

1. 註冊 member_info 自訂文章類型

首先,我們需要註冊一個 member_info 的自訂文章類型。在 functions.php 加入以下程式碼:

function register_member_info_post_type() {
    $args = array(
        'labels' => array(
            'name' => '會員資訊',
            'singular_name' => '會員資訊'
        ),
        'public' => true,
        'has_archive' => true,
        'supports' => array('title', 'editor', 'author'),
        'rewrite' => array('slug' => 'member-info'),
    );
    register_post_type('member_info', $args);
}
add_action('init', 'register_member_info_post_type');

此程式碼將在 WordPress 初始化時,註冊 member_info 這個自訂文章類型,並指定 URL slug 為 member-info

2. 自動建立會員資訊文章

接下來,當新會員註冊時,我們會自動建立一篇 member_info 文章,並填入基本的內容。

function ks_create_member_info_post($user_id) {
    // 取得用戶資訊
    $user = get_userdata($user_id);
    $display_name = $user->display_name; // 顯示名稱
    
    // 設定固定格式的標題
    $post_title = $display_name;
    
    // 設定 Gutenberg 內容
    $post_content = '
    <!-- wp:heading {"level":3} -->
    <h3><strong>經歷</strong>(公開資訊)</h3>
    <!-- /wp:heading -->
    
    <!-- wp:paragraph -->
    <p>公開資訊</p>
    <!-- /wp:paragraph -->
    
    <!-- wp:heading {"level":3} -->
    <h3><strong>專長</strong>(公開資訊)</h3>
    <!-- /wp:heading -->
    
    <!-- wp:paragraph -->
    <p>公開資訊</p>
    <!-- /wp:paragraph -->';
    
    // 建立 `member_info` 文章
    $post_data = array(
        'post_title'    => $post_title,
        'post_content'  => $post_content,
        'post_status'   => 'publish', // 文章狀態: 發佈
        'post_author'   => $user_id, // 指定為該會員
        'post_type'     => 'member_info', // 自訂文章類型
    );
    
    // 插入文章並獲取文章 ID
    $post_id = wp_insert_post($post_data);
    
    if ($post_id) {
        // 設定 ACF 欄位預設值
        update_field('member_content', '登入會員限定內容', $post_id);
        update_field('member_current_position', '目前任職', $post_id);
        update_field('member_experience', '(公開資訊區)<br>信箱、網站、學歷、學號?', $post_id);
    }
}

// 監聽會員註冊事件
add_action('user_register', 'ks_create_member_info_post');

3. 說明程式碼內容

  • user_register Hook:當新會員註冊時,會自動執行 ks_create_member_info_post() 函式。

  • get_userdata($user_id):取得該用戶的基本資料。

  • wp_insert_post():建立 member_info 文章,並設為該用戶的專屬文章。

  • Gutenberg 內容:設定文章的基本架構,包含 h3 標題與 p 段落。

  • ACF 欄位填充:如果有安裝 Advanced Custom Fields,則可以自動設定特定欄位的預設內容。

4. 確保程式運作正確

  • 確保 CPT 正確註冊:先檢查 member_info 這個自訂文章類型是否已成功加入 WordPress。

  • 檢查 ACF 是否已安裝:如果 update_field() 無作用,請確認 Advanced Custom Fields 插件是否啟用。

  • 測試會員註冊:註冊新會員後,前往「會員資訊」頁面,檢查是否有新文章產生。

5. 總結

透過這種方式,我們可以在 WordPress 會員註冊時,自動建立會員資訊頁面,並填入預設內容與 ACF 欄位。這不僅能提升網站的自動化程度,還能確保每位會員都有自己的專屬頁面。

發佈留言