在 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 欄位。這不僅能提升網站的自動化程度,還能確保每位會員都有自己的專屬頁面。