Các cột có thể sắp xếp của quản trị viên WordPress

Mọi người sử dụng WordPress sẽ quen thuộc với Bảng quản trị WordPress xuất hiện trong tất cả các khu vực tổng quan cốt lõi như Trang và Bài đăng. Định dạng tương tự được sử dụng cho các loại bảng này trong toàn bộ WordPress, nghĩa là bạn nhanh chóng trở nên thành thạo trong việc sử dụng các loại bảng này. Nhưng bạn có biết rằng bạn có thể sửa đổi Bảng quản trị WordPress và thay đổi thông tin được hiển thị hoặc thêm các cột bổ sung của riêng bạn không?

Trong bài viết này, chúng tôi sẽ giải thích cách bạn có thể làm điều này. Bắt đầu nào

Mục lục

những cái móc

Để hiển thị dữ liệu bảng quản trị, WordPress mở rộng Lớp tích hợp

add_filter('manage_posts_columns','add_custom_columns');
function add_custom_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
5. Lớp học
add_filter('manage_posts_columns','add_custom_columns');
function add_custom_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
5 được giới thiệu là lớp học riêng trong tệp
add_filter('manage_posts_columns','add_custom_columns');
function add_custom_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
7. Các lớp riêng tư được đặt tên là riêng tư vì chúng chỉ dành cho các lớp và chức năng cốt lõi khác sử dụng chứ không phải bởi các nhà phát triển

WordPress cung cấp cho bạn khả năng thay đổi bảng quản trị. Để thao tác với các cột của bảng, bạn phải sử dụng một trong các hook bộ lọc mà WordPress cung cấp trong tệp

add_filter('manage_posts_columns','add_custom_columns');
function add_custom_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
8

Trong tệp này, Lớp

add_filter('manage_posts_columns','add_custom_columns');
function add_custom_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
9 mở rộng Lớp
add_filter('manage_posts_columns','add_custom_columns');
function add_custom_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
5 và xác định lại các thuộc tính và phương thức của nó để điền vào các bảng quản trị theo loại bài đăng của nó. Bạn có thể sử dụng móc
add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
1 cho bảng bài đăng, móc
add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
2 cho các trang và
add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
3 nếu bạn muốn thao tác các cột của bảng loại bài đăng tùy chỉnh

Các cột được sử dụng theo mặc định cho dữ liệu bảng cũng được mô tả trong tệp này. Xung quanh dòng 616, mảng

add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
4 được giới thiệu và các cột sau được thêm vào

  • Cột hộp kiểm 'cb' cho các hành động hàng loạt
  • Cột 'tiêu đề' của bài đăng
  • Cột ‘tác giả’ dành cho tác giả Bài đăng
  • Cột 'danh mục' cho Danh mục mà bài đăng thuộc về
  • Cột 'thẻ' của bài đăng
  • Cột 'bình luận'
  • Cột 'ngày' được xuất bản

Thêm Cột tùy chỉnh vào Bảng quản trị

Thêm một cột tùy chỉnh vào bảng là điều mà các nhà phát triển thường xuyên phải làm. Ngoài ra, khả năng sắp xếp các cột của bạn cũng rất tiện lợi khi sắp xếp nội dung. Chúng tôi sẽ trình bày cách triển khai cột tùy chỉnh cho bài đăng, trang và loại bài đăng tùy chỉnh cũng như cách chúng tôi có thể sắp xếp các cột tùy chỉnh này

Bảng danh sách bài viết

Để làm ví dụ, hãy xem cách chúng tôi có thể thêm cột mô tả thời điểm bài đăng được sửa đổi lần cuối. Đây có thể là một tính năng thực sự hữu ích, đặc biệt nếu bạn điều hành một blog có nhiều bài đăng và muốn có thể kiểm tra xem mỗi bài được cập nhật lần cuối khi nào. Hãy xem làm thế nào điều này có thể được thực hiện

Để bắt đầu, chúng ta phải thêm tên cột mới vào mảng tên tiêu đề cột. Hãy xem xét kỹ hơn dòng 663 của tệp

add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
5

if ( 'page' === $post_type ) {
	$posts_columns = apply_filters( 'manage_pages_columns', $posts_columns );
} else {
	$posts_columns = apply_filters( 'manage_posts_columns', $posts_columns, $post_type );
}

Trong phần mã này, rõ ràng là chúng ta nên sử dụng bộ lọc

add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
1 (xem tại đây để biết thêm thông tin về điều này) vì chúng ta muốn thực hiện các thay đổi đối với bảng danh sách bài đăng. Để thêm tên cột vào mảng tiêu đề cột, chúng tôi sẽ chỉnh sửa tệp
add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
7 của chủ đề đang hoạt động của chúng tôi và chèn đoạn mã này

add_filter('manage_posts_columns','add_custom_columns');
function add_custom_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}

Bây giờ nếu chúng tôi làm mới trang danh sách bài đăng của quản trị viên, chúng tôi có thể thấy cột bổ sung. Sẽ không có dữ liệu trong cột này ở giai đoạn này

Các cột có thể sắp xếp của quản trị viên WordPress

Trong bước tiếp theo, chúng tôi cần cho WordPress biết nội dung nào sẽ được hiển thị trong cột. Để làm điều này, chúng tôi sẽ sử dụng hành động

add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
1 là một phần của chức năng công khai
add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
9 chịu trách nhiệm về đầu ra cột. Hành động này chỉ tương ứng với các loại bài đăng không phân cấp, chẳng hạn như bài đăng và bạn có thể phát hiện ra nó ở dòng 1258

Những gì chúng tôi thực sự sẽ làm ở đây để điền nội dung là chạy câu lệnh chuyển đổi cho tất cả các cột tùy chỉnh và vì tên tiêu đề là 'last_modified' (như chúng tôi đã đăng ký ở bước đầu tiên ở trên), chúng tôi sẽ lặp lại nội dung của mình. Để lặp lại nội dung, chúng tôi sẽ sử dụng hàm

add_filter('manage_pages_columns','add_custom_page_columns');
function add_custom_page_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
0 tích hợp trong WordPress và trả về trường mong muốn có thể là bất kỳ cột nào từ bảng
add_filter('manage_pages_columns','add_custom_page_columns');
function add_custom_page_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
1 trong cơ sở dữ liệu. Trong trường hợp thất bại, nó sẽ trả về chuỗi rỗng

Các cột có thể sắp xếp của quản trị viên WordPress

Vì vậy, trong tệp

add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
7, chúng tôi sẽ thêm mã bên dưới

add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}

Bạn có thể xác nhận điều này đang hoạt động như mong đợi bằng cách làm mới trang một lần nữa

Các cột có thể sắp xếp của quản trị viên WordPress

Lưu ý rằng giá trị 'Sửa đổi lần cuối' cho bài đăng thứ hai chưa bao giờ được sửa đổi sau lần xuất bản đầu tiên của nó giống với ngày xuất bản

Bảng danh sách trang

Để làm điều tương tự trong bảng danh sách trang, chúng tôi thêm tên cột theo cách tương tự vào mảng tên tiêu đề cột. Sự khác biệt lần này là chúng ta sẽ sử dụng móc

add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
2 như hình bên dưới

add_filter('manage_pages_columns','add_custom_page_columns');
function add_custom_page_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}

Tiếp theo, chúng tôi sẽ thêm nội dung bằng cách sử dụng móc

add_filter('manage_pages_columns','add_custom_page_columns');
function add_custom_page_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
4 thay vì
add_filter('manage_pages_columns','add_custom_page_columns');
function add_custom_page_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
5 mà chúng tôi đã sử dụng trước đó

add_action( 'manage_pages_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}

Sau khi chèn mã ở trên vào tệp

add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
7 của chúng tôi, chúng tôi có thể xác nhận mọi thứ đang hoạt động như mong đợi bằng cách truy cập bảng Quản trị Trang trong khu vực quản trị của chúng tôi, nơi bây giờ chúng tôi sẽ thấy cột 'Sửa đổi lần cuối'

Các cột có thể sắp xếp của quản trị viên WordPress

Bảng loại bài đăng tùy chỉnh

Trước tiên, chúng tôi sẽ tạo một loại bài đăng tùy chỉnh bằng cách chèn mã bên dưới vào tệp

add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
7 của chúng tôi

function my_custom_post_type() {
    register_post_type( 'mycpt',
        array(
            'labels' => array(
                'name' => __( 'Custom Post Types' ),
                'singular_name' => __( 'Custom Post Type' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'mycpt'),
            'show_in_rest' => true,
        )
    );
}
add_action( 'init', 'my_custom_post_type' );

Trong menu quản trị của chúng tôi, chúng tôi sẽ nhận thấy rằng một mục mới đã được thêm vào có tên là 'Loại bài đăng tùy chỉnh'

Các cột có thể sắp xếp của quản trị viên WordPress

Nếu bạn không biết cách tạo các loại bài đăng tùy chỉnh và muốn biết thêm, bạn có thể xem bài viết liên quan của chúng tôi về cách tạo các loại bài đăng tùy chỉnh

Bây giờ chúng tôi đã thiết lập Loại bài đăng tùy chỉnh của mình sẽ tiến hành thêm tiêu đề cột mới với nội dung của nó. Như đã đề cập trước đây, trong trường hợp CPT (Loại bài đăng tùy chỉnh), chúng tôi phải sử dụng

add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
3 để thêm cột tùy chỉnh của mình

add_filter('manage_pages_columns','add_custom_page_columns');
function add_custom_page_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
9 phải giống với đối số đầu tiên của hàm
add_action( 'manage_pages_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
0, trong trường hợp này là 'mycpt'

Vì vậy, đoạn mã chúng tôi sẽ sử dụng trong tệp

add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
7 để thêm tiêu đề cột của chúng tôi sẽ như sau

add_filter( 'manage_mycpt_posts_columns','add_mycpt_custom_columns');
function add_mycpt_custom_columns( $columns ) {  
    $columns['last_modified'] = 'Last modified';
    return $columns;
}

Và để điền vào nội dung cột

add_action( 'manage_mycpt_posts_custom_column','fill_mycpt_posts_custom_column');
function fill_mycpt_posts_custom_column( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}

Kết quả sẽ giống như thế này

Các cột có thể sắp xếp của quản trị viên WordPress

Tạo các cột có thể sắp xếp

Để làm cho cột có thể sắp xếp, chúng tôi phải xác định cột tùy chỉnh nào được phép sắp xếp. Để thực hiện điều này, chúng tôi sử dụng bộ lọc

add_action( 'manage_pages_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
2 với chức năng gọi lại

Vì vậy, trong mỗi trường hợp loại bài đăng, chúng tôi sẽ thêm cùng một mã (tất nhiên là có tên hàm duy nhất)

Đối với bài viết

add_filter( 'manage_edit-post_sortable_columns', 'sortable_post_columns' );
function sortable_post_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}

Đối với các trang

add_filter( 'manage_edit-page_sortable_columns', 'sortable_page_columns' );
function sortable_page_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}

Đối với loại bài đăng tùy chỉnh của chúng tôi (mycpt)

add_filter('manage_posts_columns','add_custom_columns');
function add_custom_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
0

Bây giờ, nếu bạn truy cập một trong các bảng Quản trị của mình, bạn sẽ thấy rằng tiêu đề của cột tùy chỉnh được hiển thị dưới dạng liên kết. Nếu bạn nhấp vào đây thì nó sẽ sắp xếp theo ngày sửa đổi

Các cột có thể sắp xếp của quản trị viên WordPress

Vô hiệu hóa Sắp xếp cho Cột

Để loại bỏ tính năng sắp xếp cho một cột, chúng ta chỉ cần loại bỏ nó khỏi mảng. Ví dụ: nếu chúng tôi muốn làm điều này cho cột 'ngày', chúng tôi sẽ thêm vào một dòng mã bổ sung

add_action( 'manage_pages_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
3. Điều này sẽ trông như thế này

Đối với bài viết

add_filter('manage_posts_columns','add_custom_columns');
function add_custom_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
1

Đối với các trang

add_filter('manage_posts_columns','add_custom_columns');
function add_custom_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
2

Đối với loại bài đăng tùy chỉnh của chúng tôi (mycpt)

add_filter('manage_posts_columns','add_custom_columns');
function add_custom_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
3

Bây giờ, nếu bạn truy cập vào bảng thích hợp, bạn sẽ nhận thấy rằng nhãn Ngày không thể nhấp được nữa (và do đó, cột đó không thể sắp xếp được nữa)

Tại thời điểm này, đáng để làm nổi bật một chi tiết thường khiến các nhà phát triển WordPress bối rối. Hãy xem bảng bên dưới hiển thị các hook mà chúng tôi đã sử dụng cho Bài đăng, Trang và Bài đăng tùy chỉnh

Các cột có thể sắp xếp của quản trị viên WordPress

Bạn có thể nhận thấy rằng các móc mà chúng tôi sử dụng để sắp xếp các cột không thực sự tuân theo mẫu. Bạn sẽ mong đợi chúng lần lượt là

add_action( 'manage_pages_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
4,
add_action( 'manage_pages_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
5 và
add_action( 'manage_pages_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
6. Thật không may, đây chỉ là vấn đề đặt tên xấu. Tuy nhiên, rất hữu ích khi giữ một bảng tóm tắt như thế này như một lời nhắc nhở dễ dàng

Thay đổi chiều rộng cột

Để điều chỉnh độ rộng của cột, chúng tôi sẽ sử dụng hook hành động

add_action( 'manage_pages_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
7 mà WordPress cung cấp và thực thi trong phần đầu cho tất cả các trang quản trị bao gồm CSS hoặc JS

Ví dụ: hãy thử nhập mã bên dưới vào tệp

add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
7

add_filter('manage_posts_columns','add_custom_columns');
function add_custom_columns( $columns ) {
    $columns['last_modified'] = 'Last modified';
    return $columns;
}
4

Ở đây, chúng tôi đã sử dụng lớp

add_action( 'manage_pages_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) { 
        case 'last_modified':
            echo get_post_field('post_modified', $post_id);
        break;
   }
}
9 của cột tiêu đề phổ biến cho tất cả các bảng quản trị và lớp
function my_custom_post_type() {
    register_post_type( 'mycpt',
        array(
            'labels' => array(
                'name' => __( 'Custom Post Types' ),
                'singular_name' => __( 'Custom Post Type' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'mycpt'),
            'show_in_rest' => true,
        )
    );
}
add_action( 'init', 'my_custom_post_type' );
0. Kết hợp lại, những điều này đảm bảo rằng CSS sẽ chỉ được áp dụng trong bảng danh sách bài đăng

Để đạt được điều tương tự cho các màn hình Quản trị viên khác của chúng tôi (chẳng hạn như Trang), chúng tôi sẽ sử dụng

function my_custom_post_type() {
    register_post_type( 'mycpt',
        array(
            'labels' => array(
                'name' => __( 'Custom Post Types' ),
                'singular_name' => __( 'Custom Post Type' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'mycpt'),
            'show_in_rest' => true,
        )
    );
}
add_action( 'init', 'my_custom_post_type' );
1 thay thế

Phần kết luận

Có rất nhiều khả năng khi thao tác với các cột Bảng quản trị WordPress. Trong các bài viết trong tương lai, chúng tôi sẽ chạy qua một số ví dụ khác và cung cấp một số thủ thuật hữu ích mà bạn có thể sử dụng để tận dụng tối đa các bảng Quản trị của mình