Làm cách nào tôi có thể thêm một cột tùy chỉnh vào bảng Quản lý danh mục của người dùng?


7

Tôi đã thực hiện điều này với các bài đăng, nhưng tôi không thể tìm thấy cách thích hợp để tham chiếu các cột của bảng danh mục.

Tôi đang cố gắng thêm một cột có tiêu đề "Hình ảnh" vào bảng để khi lưới bảng danh mục được hiển thị, nếu có một hình ảnh thể loại được gán cho danh mục, nó sẽ xuất hiện trong lưới.

Bước đầu tiên đối với tôi là xác định bộ lọc thích hợp để giải quyết để chèn columb vào bảng.

Tôi đã thử từng thứ một nhưng không có kết quả ...

add_filter('manage_categories_columns', 'myFunction', 10, 2);
add_filter('manage_category_columns', 'myFunction', 10, 2);

function myFunction($cat_columns)
{
    $cat_columns['cat_image_thumb'] = 'Image';
    return $cat_columns;
}

Câu trả lời:


7

Bộ lọc là manage_{$screen->id}_columns, và $screen->idedit-category, cung cấp cho bạn manage_edit-category_columns.

Tôi đã tìm thấy điều này bằng cách đặt một var_dump()trong get_column_headers(), được gọi bởi print_column_headers(), được gọi trong wp-admin/edit-tags.php, trang mà bạn chỉnh sửa các mục danh mục.


@Jan: Cảm ơn! Điều đó đã làm điều đó cho tiêu đề cột. Bây giờ tôi đang cố gắng sử dụng tuyến theo dõi của bạn để tìm hiểu cách thêm chèn hàng. Nhìn vào edit-tags.php Tôi thấy lệnh gọi "tag_rows", mà tôi tin là thứ tạo ra các hàng, nhưng tôi không thể định vị hàm đó để var_dump để lấy tên bộ lọc. Có ý kiến ​​gì không?
Scott B

@ Hủy bỏ: Nếu bạn đang nói về một phân loại phân cấp như danh mục, tag_rows()cuộc gọi _term_rows(), cuộc gọi nào _tag_row(). Hàm này gọi manage_{$taxonomy}_custom_columnhành động , sẽ manage_category_custom_columndành cho bạn.
Jan Fabry

@Jan cảm ơn. Tôi có thể thiết lập hành động, nhưng dường như không thể nhận được tiếng vang để phản hồi .. hành động> add_action ('Manage_carget_custom_column', 'myFunction', 10, 2);
Scott B

@Scott: Thật vậy, tôi đã sai, nó là một bộ lọc , không phải là một hành động, vì vậy bạn nên trả lại nội dung bạn muốn hiển thị, không lặp lại nó - ngược lại với các cột tùy chỉnh, nơi bạn phải lặp lại nó.
Jan Fabry

OK, tốt hơn rồi. Hoạt động hoàn hảo với bộ lọc và trở lại so với hành động và tiếng vang. Cảm ơn tháng giêng!
Scott B

5

Ngoài ví dụ của @ LeoDang, custom_column được áp dụng cho phân loại tùy chỉnh dựa trên các bộ lọc sau.

Đã kiểm tra và xác nhận trong Wordpress 3.8

1. Thêm tiêu đề Cột tùy chỉnh

// these filters will only affect custom column, the default column will not be affected
// filter: manage_edit-{$taxonomy}_columns
function custom_column_header( $columns ){
    $columns['header_name'] = 'Header Name for Display'; 

    return $columns;
}
add_filter( "manage_edit-shop-subcategory_columns", 'custom_column_header', 10);

2. Thêm dữ liệu cột tùy chỉnh vào tiêu đề cột tương ứng

// parm order: value_to_display, $column_name, $tag->term_id
// filter: manage_{$taxonomy}_custom_column
function custom_column_content( $value, $column_name, $tax_id ){
    // var_dump( $column_name );
    // var_dump( $value );
    // var_dump( $tax_id );

    // for multiple custom column, you may consider using the column name to distinguish

    // although If clause is working, Switch is a more generic and well structured approach for multiple columns
    // if ($column_name === 'header_name') {
        // echo '1234';
    // }
    switch( $column_name ) {
          case 'header_name1':
               // your code here
               $value = 'header name 1';
          break;

          case 'header_name2':
               // your code here
               $value = 'header name 2';
          break;

          // ... similarly for more columns
          default:
          break;
    } 

    return $value; // this is the display value
}
add_action( "manage_shop-subcategory_custom_column", 'custom_column_content', 10, 3);

Bạn cũng có thể tham khảo mã chính được chia sẻ trực tuyến cho bất kỳ cập nhật và ghi chú bổ sung.


Mọi thứ được nhận xét ở bước 2.
tehlivi

@tehlivi Cảm ơn bạn đã bình luận. Mặc dù nó đã có từ lâu, tôi đã cập nhật nó với nhiều lời giải thích hơn và hy vọng có thể giúp ích cho khán giả trong tương lai.
simongcc

4

Thêm tên cột

function manage_my_category_columns($columns)
{
 // add 'My Column'
 $columns['my_column'] = 'My Column';

 return $columns;
}
add_filter('manage_edit-category_columns','manage_my_category_columns');

Tiếp theo chúng tôi muốn đưa dữ liệu vào đó:

function manage_category_custom_fields($deprecated,$column_name,$term_id)
{
 if ($column_name == 'my_column') {
   echo 'test';
 }
}
add_filter ('manage_category_custom_column', 'manage_category_custom_fields', 10,3);

Tôi hy vọng điều này là hữu ích.


Vâng, nó rất hữu ích. Cảm ơn bạn @LeoDang
Jasom Dotnet
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.