Menyesuaikan Tabel Admin WordPress: Memulai

Diterbitkan: 2021-01-25

Setiap orang yang menggunakan WordPress akan terbiasa dengan Tabel Admin WordPress yang muncul di semua area ikhtisar inti seperti Halaman dan Postingan. Format yang sama digunakan untuk jenis tabel ini di seluruh WordPress yang berarti Anda dengan cepat menjadi mahir menggunakannya. Tapi tahukah Anda bahwa Anda dapat memodifikasi Tabel Admin WordPress dan mengubah informasi yang ditampilkan atau menambahkan kolom tambahan Anda sendiri?

Pada artikel ini kami akan menjelaskan bagaimana Anda dapat melakukan ini. Mari kita mulai!

Kaitnya

Untuk menampilkan data tabel admin, WordPress memperluas WP_List_Table . Kelas WP_List_Table diperkenalkan sebagai kelas privat dalam wp-admin/includes/class-wp-list-table.php . Kelas privat dinamai privat karena hanya dimaksudkan untuk digunakan oleh kelas dan fungsi inti lainnya dan bukan oleh pengembang.

WordPress menawarkan Anda kemampuan untuk mengubah tabel admin. Untuk memanipulasi kolom tabel, Anda harus menggunakan salah satu filter hook yang disediakan WordPress di wp-admin/includes/class-wp-posts-list-table.php .

Dalam file ini, Kelas WP_Posts_List_Table memperluas Kelas WP_List_Table dan mendefinisikan ulang properti dan metodenya untuk mengisi tabel admin sesuai dengan jenis postingnya. Anda dapat menggunakan kait manage_posts_columns untuk tabel posting, manage_pages_columns untuk halaman dan manage_{$post_type}_posts_columns jika Anda ingin memanipulasi kolom tabel jenis posting kustom.

Kolom yang digunakan secara default untuk data tabel juga dijelaskan dalam file ini. Sekitar baris 616 array $posts_columns diperkenalkan dan kolom berikut ditambahkan:

  • Kolom kotak centang 'cb' untuk tindakan massal
  • Kolom 'judul' posting
  • Kolom 'penulis' untuk penulis Post
  • Kolom 'kategori' untuk Kategori yang dimiliki pos
  • Kolom 'tag' postingan
  • Kolom 'komentar'
  • Kolom 'tanggal' yang diterbitkan

Menambahkan Kolom Kustom ke Tabel Admin

Menambahkan kolom khusus ke tabel adalah sesuatu yang sering perlu dilakukan pengembang. Selain itu, kemampuan untuk mengurutkan kolom juga sangat berguna saat mengatur konten. Kami akan mendemonstrasikan bagaimana kolom kustom diterapkan untuk posting, halaman, dan jenis posting kustom dan bagaimana kami dapat membuat kolom kustom ini dapat diurutkan.

Tabel Daftar Posting

Sebagai contoh, mari kita lihat bagaimana kita bisa menambahkan kolom yang menjelaskan kapan posting terakhir diubah. Ini bisa menjadi fitur yang sangat berguna untuk dimiliki, terutama jika Anda menjalankan blog dengan banyak posting dan ingin dapat memeriksa kapan setiap posting terakhir diperbarui. Mari kita lihat bagaimana ini bisa diterapkan.

Untuk memulai, kita harus menambahkan nama kolom baru ke array nama header kolom. Mari kita lihat lebih dekat baris 663 dari file class-wp-posts-list-table.php .

 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 ); }

Di bagian kode ini jelas bahwa kita harus menggunakan filter manage_posts_columns (lihat di sini untuk info lebih lanjut tentang ini) karena kita ingin membuat perubahan pada tabel daftar posting. Untuk menambahkan nama kolom ke array header kolom, kita akan mengedit file functions.php dari tema aktif kita dan memasukkan potongan kode ini:

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

Sekarang jika kita me-refresh halaman daftar posting admin kita dapat melihat kolom tambahan. Tidak akan ada data di kolom ini pada tahap ini.

kustomisasi dasar tabel admin wordpress

Pada langkah selanjutnya, kita perlu memberi tahu WordPress konten apa yang akan ditampilkan di kolom. Untuk melakukan ini, kita akan menggunakan tindakan manage_posts_columns yang merupakan bagian dari fungsi publik column_default yang bertanggung jawab atas keluaran kolom. Tindakan ini hanya sesuai dengan jenis posting yang non-hierarkis, seperti posting, dan Anda dapat menemukannya di sekitar baris 1258.

Apa yang sebenarnya akan kami lakukan di sini untuk mengisi konten adalah menjalankan pernyataan sakelar untuk semua kolom khusus dan, karena nama header adalah 'last_modified' (seperti yang kami daftarkan pada langkah awal kami di atas), kami akan menggemakan konten kami. Untuk menggemakan konten, kami akan menggunakan fungsi get_post_field WordPress dan mengembalikan bidang yang diinginkan yang dapat berupa kolom apa pun dari tabel wp_posts di database. Jika terjadi kegagalan, ia akan mengembalikan string kosong.

Jadi di file functions.php kita akan menambahkan kode di bawah ini:

 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; } }

Anda dapat mengonfirmasi bahwa ini berfungsi seperti yang diharapkan dengan menyegarkan halaman sekali lagi.

Perhatikan, bahwa nilai 'Terakhir diubah' untuk posting kedua yang tidak pernah diubah setelah publikasi awalnya sama dengan tanggal publikasi.

Tabel Daftar Halaman

Untuk melakukan hal yang sama di tabel daftar halaman, kita menambahkan nama kolom dengan cara yang sama ke array nama header kolom. Bedanya kali ini kita akan menggunakan hook manage_pages_columns seperti gambar di bawah ini:

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

Selanjutnya kita akan menambahkan konten menggunakan kait manage_pages_custom_column alih-alih manage_posts_custom_column yang kita gunakan sebelumnya.

 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; } }

Setelah memasukkan kode di atas ke dalam file functions.php kami, kami dapat mengonfirmasi bahwa semuanya berfungsi seperti yang diharapkan dengan mengunjungi tabel Admin Halaman di area admin kami di mana sekarang kami akan melihat kolom 'Terakhir Dimodifikasi'.

Tabel Jenis Posting Kustom

Pertama-tama kita akan membuat jenis posting kustom dengan memasukkan kode di bawah ini ke dalam file functions.php kita:

 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' );

Di menu admin kami, kami akan melihat bahwa item baru telah ditambahkan yang disebut 'Jenis Posting Kustom'.

Jika Anda tidak tahu bagaimana jenis posting khusus dibuat dan ingin tahu lebih banyak, Anda dapat melihat artikel terkait kami tentang cara membuat jenis posting khusus.

Sekarang kita sudah mendapatkan Custom Post Type setup kita akan melanjutkan dengan menambahkan header kolom baru kita dengan isinya. Seperti disebutkan sebelumnya, dalam kasus CPT (Jenis Posting Kustom) kita harus menggunakan manage_{$post_type}_posts_columns untuk menambahkan kolom kustom kita.

{$post_type} harus identik dengan argumen pertama dari fungsi register_post_type() yang dalam hal ini adalah 'mycpt'.

Jadi, potongan kode yang akan kita gunakan dalam file functions.php untuk menambahkan header kolom kita adalah sebagai berikut:

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

Dan untuk mengisi kolom isi:

 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; } }

Hasilnya harus seperti ini:

Jadikan Kolom Dapat Diurutkan

Untuk membuat kolom dapat diurutkan, kita harus menentukan kolom khusus mana yang diizinkan untuk diurutkan. Untuk mencapai ini, kami menggunakan manage_edit-{post-type}_sortable_columns dengan fungsi callback.

Jadi, dalam setiap kasus jenis posting kami akan menambahkan kode yang sama (dengan nama fungsi yang unik tentunya).

Untuk postingan:

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

Untuk halaman:

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

Untuk jenis kiriman khusus kami (mycpt):

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

Sekarang, jika Anda mengunjungi salah satu tabel Admin, Anda akan melihat bahwa tajuk kolom khusus ditampilkan sebagai tautan. Jika Anda mengklik ini, itu harus diurutkan berdasarkan tanggal yang dimodifikasi.

Nonaktifkan Penyortiran untuk Kolom

Untuk menghapus fitur penyortiran untuk kolom, kita hanya perlu menghapusnya dari array. Jika misalnya kita ingin melakukan ini untuk kolom 'tanggal' kita akan menambahkan baris kode tambahan unset($columns['date']) . Ini akan terlihat seperti ini:

Untuk postingan:

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

Untuk halaman:

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

Untuk jenis kiriman khusus kami (mycpt):

 add_filter( 'manage_edit-mycpt_sortable_columns', 'sortable_mycpt_posts_columns' ); function sortable_mycpt_posts_columns( $columns ) { $columns['last_modified'] = 'Last modified'; unset($columns['date']); return $columns; }

Sekarang jika Anda mengunjungi tabel yang sesuai, Anda akan melihat bahwa label Tanggal tidak lagi dapat diklik (dan karenanya kolom tersebut tidak lagi dapat diurutkan).

Pada titik ini, ada baiknya menyoroti detail yang sering membingungkan para pengembang WordPress. Lihat tabel di bawah ini yang menunjukkan kait yang kami gunakan untuk Posting, Halaman, dan Posting Kustom.

kait tabel admin wordpress

Anda mungkin telah memperhatikan bahwa kait yang kami gunakan untuk menyortir kolom tidak benar-benar mengikuti polanya. Anda akan mengharapkan mereka menjadi manage_posts_sortable_columns , manage_pages_sortable_columns dan manage_mycpt_posts_sortable_columns masing-masing. Sayangnya ini hanya masalah penamaan yang buruk. Akan tetapi, sangat membantu untuk menyimpan tabel ringkasan seperti ini sebagai pengingat yang mudah.

Mengubah Lebar Kolom

Untuk menyesuaikan lebar kolom, kita akan menggunakan action hook admin_head yang disediakan dan dijalankan WordPress di bagian head untuk semua halaman admin yang menyertakan CSS atau JS.

Sebagai contoh, coba masukkan kode di bawah ini ke dalam file functions.php :

 add_action('admin_head', 'my_column_width'); function my_column_width() { echo '<style type="text/css">'; echo '.table-view-list.posts .column-title { width:120px !important; overflow:hidden }'; echo '</style>'; }

Di sini, kami menggunakan kelas .column-title dari kolom judul yang umum untuk semua tabel admin, dan kelas .table-view-list.posts . Gabungan, ini memastikan bahwa CSS hanya akan diterapkan di tabel daftar posting.

Untuk mencapai hal yang sama untuk layar Admin kami yang lain (seperti Halaman), kami akan menggunakan table-view-list.pages sebagai gantinya.

Kesimpulan

Ada banyak kemungkinan untuk memanipulasi kolom Tabel Admin WordPress. Di artikel mendatang kami akan membahas beberapa contoh lagi dan memberikan beberapa trik berguna yang dapat Anda gunakan untuk memaksimalkan tabel Admin Anda!