Tạo bảng theo kiểu quản trị viên?


44

Cách tạo trang được đề xuất với bảng, theo kiểu bảng hiển thị bài đăng hoặc người dùng trong khu vực quản trị là gì?

Tôi đang mở rộng plugin Cache Images và nó chứa một bảng có tên miền và một số hình ảnh từ tên miền đó. Vì vậy, không có bảng tương đương hiện có mà tôi có thể xây dựng (trong phiên bản đầu tiên của câu hỏi này, tôi đã hỏi về một bảng có bài đăng, nhưng ở đó tôi có thể (có thể) mở rộng bảng bài hiện có ).

Tôi có nên chỉ dựa vào trang tổng quan bài đăng và bắt đầu với một <table class="widefat">hoặc có chức năng tốt hơn để xử lý việc này bây giờ không? Bạn có biết một ví dụ sạch sẽ, trống rỗng của một bảng với phân trang mà tôi có thể dựa vào công việc của mình không?


3
Có một blog mới cho phong cách giao diện người dùng WordPress, bạn có thể thấy nó hữu ích. dotorgstyleguide.wordpress.com/outline
sorich87

2
Lưu ý đến bản thân: scribu đã thêm một hệ thống bảng ajaxified mới trong WP 3.1 , với một lớp cơ sở WP_List_Table. Câu hỏi này có lẽ có thể được cập nhật với thông tin về cách sử dụng nó.
Jan Fabry

Câu trả lời:


29

Đây là những gì tôi thường sử dụng:

<table class="widefat fixed" cellspacing="0">
    <thead>
    <tr>

            <th id="cb" class="manage-column column-cb check-column" scope="col"></th> // this column contains checkboxes
            <th id="columnname" class="manage-column column-columnname" scope="col"></th>
            <th id="columnname" class="manage-column column-columnname num" scope="col"></th> // "num" added because the column contains numbers

    </tr>
    </thead>

    <tfoot>
    <tr>

            <th class="manage-column column-cb check-column" scope="col"></th>
            <th class="manage-column column-columnname" scope="col"></th>
            <th class="manage-column column-columnname num" scope="col"></th>

    </tr>
    </tfoot>

    <tbody>
        <tr class="alternate">
            <th class="check-column" scope="row"></th>
            <td class="column-columnname"></td>
            <td class="column-columnname"></td>
        </tr>
        <tr>
            <th class="check-column" scope="row"></th>
            <td class="column-columnname"></td>
            <td class="column-columnname"></td>
        </tr>
        <tr class="alternate" valign="top"> // this row contains actions
            <th class="check-column" scope="row"></th>
            <td class="column-columnname">
                <div class="row-actions">
                    <span><a href="#">Action</a> |</span>
                    <span><a href="#">Action</a></span>
                </div>
            </td>
            <td class="column-columnname"></td>
        </tr>
        <tr valign="top"> // this row contains actions
            <th class="check-column" scope="row"></th>
            <td class="column-columnname">
                <div class="row-actions">
                    <span><a href="#">Action</a> |</span>
                    <span><a href="#">Action</a></span>
                </div>
            </td>
            <td class="column-columnname"></td>
        </tr>
    </tbody>
</table>

Mong rằng sẽ giúp.


Có phải nó cũng được chèn phân trang tự động như thế này? (ví dụ: hiển thị bài 1-20)
Michiel Standaert

@MichielStandaert số
kaiser

@MichielStandaert nếu bạn muốn có kết quả phân trang, bạn có thể sử dụng paginate_links
tiltdown

Cảm ơn ! (Nhưng tôi vẫn hỏi tại sao họ không sử dụng :oddhàng thay vì cho phép chúng tôi thêm một lớp mỗi hai hàng ...)
Zachary Dahan

Rõ ràng có những giải pháp "tốt hơn" (giống như các câu trả lời khác ở đây), nhưng đối với một bảng cơ bản, nhanh chóng, đây chính xác là những gì tôi đã theo đuổi. Cảm ơn bạn!
rinogo

26

Sử dụng API lõi, không chỉ CSS của nó

Thông thường bạn chỉ cần sử dụng một thể hiện của WP_List_Tablelớp.

Hướng dẫn:

  • Thông tin thêm về nó trong Codex ở đây .
  • Đây cũng là một hướng dẫn từ WP Engineering - quá nhiều để sao chép nó.
  • Và một hướng dẫn khác trên Tạp chí Smashing trực tuyến.

Những lợi ích?

ĐÚNG!

Bạn có thể thêm phân trang, hộp tìm kiếm, hành động và bất kỳ phép thuật nào bạn có thể tưởng tượng (và có thể mã hóa).


1
Gợi ý nhỏ dưới dạng liên kết để xem đánh dấu, các lớp cho giao diện quản trị, mà không chỉ có mục tiêu tạo bảng: github.com/bueltge/WordPress-Admin-Style
bueltge

1
> Quyền truy cập của lớp này được đánh dấu là riêng tư. Điều đó có nghĩa là nó không dành cho các nhà phát triển plugin và chủ đề sử dụng vì nó có thể thay đổi mà không có cảnh báo trong bất kỳ bản phát hành WordPress nào trong tương lai. Nếu bạn vẫn muốn sử dụng lớp, bạn nên tạo một bản sao để sử dụng và phân phối với dự án của riêng bạn, nếu không bạn sẽ tự chịu rủi ro khi sử dụng nó.
Austin cầu nguyện

@AustinPray Một bản sao ? Không, xin đừng làm vậy. Có sẵn betas, RC và các bản phát hành trước khác của WP. Chỉ cần cập nhật thực hiện / mở rộng của bạn. Nếu bạn thực sự phải đi ngang, chỉ cần viết một cái gì đó tốt hơn của riêng bạn. Mã cốt lõi không phải tốt.
kaiser

@kaiser Đừng bắn tin nhắn, đó không phải là lời của tôi. Tôi đã trích dẫn từ WP Codex. Mặc dù đăng ký bản thân để thử nghiệm hồi quy vĩnh viễn với mọi phiên bản beta và RC không có vẻ tốt hơn nhiều so với việc sao chép lớp. Tôi đồng ý viết lớp đơn giản của riêng bạn là một cách tốt hơn về phía trước.
Austin cầu nguyện

@AustinPray Không có cảm giác khó khăn :) Codex được viết bởi những người như bạn và tôi. Trong thực tế, bạn có thể đi ngay bây giờ và hoàn nguyên câu nói đó và mọi người sẽ trích dẫn nó.
kaiser



0

Bạn có thể muốn xem xét thêm bộ lọc vào danh sách loại bài đăng tùy chỉnh của mình trong quản trị viên? Câu trả lời được liên kết dưới đây cho thấy cách thực hiện với phân loại nhưng bạn có thể dễ dàng sử dụng các tiêu chí khác trong restrict_manage_postshook của mình :

Hãy cho tôi biết nếu bạn có thêm câu hỏi.


Tôi xin lỗi vì câu hỏi không rõ ràng. Trong ví dụ đầu tiên của tôi, đó là một bảng các bài đăng, và thực sự, tôi có thể thử sử dụng bảng bài đăng hiện có cho điều đó (ngay cả khi tôi chỉ muốn hiển thị tiêu đề bài đăng và sau đó là tất cả các cột tùy chỉnh?). Nhưng bây giờ tôi đã chỉnh sửa câu hỏi của mình bằng một ví dụ cụ thể: Tôi có một bảng tên miền, vì vậy không có bảng tương đương hiện có mà tôi có thể mở rộng.
Jan Fabry

@Jan : À. Vâng, tôi nghĩ rằng bạn đã tìm thấy sự thật, rằng không có cách nào được đóng gói tốt để làm điều này ngoài việc viết HTML (trùng lặp). Tôi thường có cùng một vấn đề. Có thể tạo một vé trên trac yêu cầu cải tiến này và liên kết URL / vé # ở đây để chúng tôi có thể hỗ trợ.
MikeSchinkel
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.