如何在WordPress使用者編輯頁面新增”是否是老師”欄位

在 WordPress 中,為使用者管理新增自訂欄位是一種常見的需求。本文將介紹如何新增一個”是否是老師”的選項,讓您可以標記使用者是否為老師。以下是完整的實作步驟及程式碼解析。


一、在使用者編輯頁面新增自訂欄位

首先,我們需要在使用者編輯頁面新增一個勾選框,讓管理員可以選擇是否標記某位使用者為老師。

function ks_add_teacher_user_profile($user) {
    ?>
    <h3>老師身分設定</h3>
    <table class="form-table">
        <tr>
            <th><label for="teacher_user">是否為老師</label></th>
            <td>
                <input type="checkbox" name="teacher_user" id="teacher_user" value="1" <?php checked(get_user_meta($user->ID, 'teacher_user', true), 1); ?> />
                <span class="description">勾選此選項以標記此使用者為老師。</span>
            </td>
        </tr>
    </table>
    <?php
}
add_action('show_user_profile', 'ks_add_teacher_user_profile');
add_action('edit_user_profile', 'ks_add_teacher_user_profile');

二、保存欄位數據

接下來,我們需要將這個勾選框的值保存到資料庫中。

function save_teacher_user_profile($user_id) {
    if (!current_user_can('edit_user', $user_id)) {
        return false;
    }

    $checkbox_value = isset($_POST['teacher_user']) ? 1 : 0;
    update_user_meta($user_id, 'teacher_user', $checkbox_value);
}
add_action('personal_options_update', 'save_teacher_user_profile');
add_action('edit_user_profile_update', 'save_teacher_user_profile');

三、在使用者列表新增自訂欄位

為了在 WordPress 的使用者列表頁面展示”是否是老師”,我們需要新增一個自訂欄位。

1. 新增欄位標題

function ks_add_teacher_user_column($columns) {
    $columns['teacher_user'] = '老師';
    return $columns;
}
add_filter('manage_users_columns', 'ks_add_teacher_user_column');

2. 顯示欄位內容

function ks_show_teacher_user_column($value, $column_name, $user_id) {
    if ('teacher_user' === $column_name) {
        $is_teacher_user = get_user_meta($user_id, 'teacher_user', true);
        return $is_teacher_user ? '已啟用' : '-';
    }
    return $value;
}
add_filter('manage_users_custom_column', 'ks_show_teacher_user_column', 10, 3);

四、在使用者列表新增篩選功能

最後,我們需要在使用者列表頁面中新增篩選按鈕,讓管理員可以快速查看所有的老師。

1. 新增篩選按鈕

function ks_add_teacher_user_filter_button($which) {
    if ('top' === $which) {
        ?>
        <a href="<?php echo admin_url('users.php?teacher_user_filter=1'); ?>" class="button">篩選老師</a>
        <?php
    }
}
add_action('restrict_manage_users', 'ks_add_teacher_user_filter_button');

2. 過濾老師清單

function ks_filter_teacher_user_list($query) {
    global $pagenow;

    if ('users.php' === $pagenow && isset($_GET['teacher_user_filter']) && $_GET['teacher_user_filter'] === '1') {
        $meta_query = array(
            array(
                'key'     => 'teacher_user',
                'value'   => '1',
                'compare' => '='
            ),
        );
        $query->set('meta_query', $meta_query);
    }
}
add_action('pre_get_users', 'ks_filter_teacher_user_list');

實作結果

完成以上步驟後,您將能在使用者編輯頁面新增”是否是老師”的選項,並在使用者列表頁面新增對應的欄位及篩選功能。

這些功能可以讓您更方便地管理老師帳號,提高工作效率。

發佈留言