Thêm cột vào bảng quản lý bài viết WordPress

Cập nhật lần cuối vào

Bài này mình sẽ hướng dẫn cho các bạn cách để thêm 1 cột vào bảng quản lý bài viết trong WordPress admin. Mặc định, WordPress sẽ có các cột như tiêu đề bài viết, tác giả, chuyên mục, từ khóa, ngày đăng,… bây giờ bạn muốn thêm một cột để hiển thị thông tin meta của bài viết thì bạn làm như trong hướng dẫn này.

Thêm cột vào bảng quản lý bài viết WordPress

Với bài viết hướng dẫn thêm cột vào bảng danh sách bài viết của WordPress, bạn có thể thêm cột ảnh thumbnail, hoặc cột hiển thị số lượng lượt xem của bài viết.

$post_types = hocwp_content_captcha_get_post_types();

function hocwp_content_captcha_post_column_head($columns) {
    $columns['content_captcha'] = 'Content captcha';
    return $columns;
}

function hocwp_content_captcha_post_column_content($column, $post_id) {
    if('content_captcha' == $column) {
        $div = new HOCWP_HTML('div');
        $div->set_attribute('style', 'text-align: center');
        $span = new HOCWP_HTML('span');
        $circle_class = 'icon-circle';
        $content_captcha = get_post_meta($post_id, 'content_captcha', true);
        if(1 == $content_captcha) {
            $circle_class .= ' icon-circle-success';
        }
        $span->set_attribute('data-id', $post_id);
        $span->set_attribute('data-content-captcha', $content_captcha);
        $span->set_class($circle_class);
        $div->set_text($span->build());
        $div->output();
    }
}

foreach($post_types as $post_type) {
    add_filter('manage_' . $post_type . '_posts_columns', 'hocwp_content_captcha_post_column_head');
    add_action('manage_' . $post_type . '_posts_custom_column', 'hocwp_content_captcha_post_column_content', 10, 2);
}

Trong đoạn code bên trên, mình sẽ lấy các post type có hỗ trợ, sau đó duyệt tất cả các post type trong danh sách và áp dụng hook để thêm column và nội dung của nó vào table có sẵn của WordPress.

Ngoài ra, nếu bạn muốn cột này có thể sắp xếp tăng giảm được thì bạn sử dụng filter manage_{$this->screen->id}_sortable_columns và action pre_get_posts để chỉnh sửa thông tin của biến $query.

Trong bài hướng dẫn tạo thêm cột vào bảng danh sách bài viết của WordPress này mình có sử dụng các hàm đã viết sẵn, do vậy bạn cần viết lại hàm để phù hợp với dự án của bạn, chúc bạn thành công.