Tabel Daftar Admin WordPress: Tambahkan Filter Kustom

Diterbitkan: 2021-02-26

Sebagian besar informasi di halaman dan posting Anda di Admin WordPress diatur ke dalam tabel. Siapa pun yang menggunakan WordPress akan terbiasa dengan ini. Mereka bekerja dengan baik dan memungkinkan Anda untuk melakukan 'Pengeditan Cepat' dari halaman tertentu atau informasi posting, menunjukkan tanggal posting atau halaman diterbitkan dan banyak lagi, selain itu. Selain itu, Anda mungkin telah memperhatikan bahwa Anda dapat memfilter tabel ini dengan pilihan menu tarik-turun yang muncul di bagian atas setiap tabel.

Hanya ada beberapa filter namun. Jadi, apa yang Anda lakukan jika ingin memfilter nilai yang tidak memiliki kotak filter di Admin? Untungnya WordPress mengizinkan kita untuk menambahkan filter kita sendiri. Kita akan melihat bagaimana.

Mengapa Menggunakan Filter Kustom ?

Jadi, mengapa Anda memerlukan filter khusus untuk mengatur tabel Admin di WordPress? Bayangkan kita memiliki situs yang memiliki banyak Post Author dan banyak postingan.

Host situs web Anda dengan Pressidium

GARANSI UANG KEMBALI 60 HARI

LIHAT RENCANA KAMI

Anda dapat melihat penulis Postingan dari tabel Admin tanpa modifikasi apa pun. Yang saat ini tidak dapat Anda lakukan adalah mengurutkan Postingan menurut Penulis. Jelas ini adalah batasan yang signifikan jika Anda ingin dapat dengan mudah melihat semua Postingan yang ditulis oleh penulis tertentu. Apa yang akan membantu adalah jika Anda dapat melihat menu tarik-turun dari semua penulis Postingan dan kemudian memilih salah satu dari daftar. Itu benar-benar bisa mempercepat.

Mari kita lihat bagaimana kita bisa membangun ini.

Membuat Filter Kustom Kami

Untuk membantu Anda membangun filter Anda sendiri, WordPress menyediakan kait restrict_manage_posts dan pre_get_posts .

restrict_manage_posts diperkenalkan di wp-admin/includes/class-wp-posts-list-table.php di sekitar baris 557 dan diaktifkan sebelum tombol Filter dibuat di atas daftar tabel admin.

Kami akan menggunakan fungsi khusus dan menautkannya dengan kait restrict_manage_posts seperti biasa (lihat di sini untuk informasi lebih lanjut tentang ini). Buka folder utama tema aktif Anda dan buka file functions.php dengan editor favorit Anda. Di akhir isi file masukkan kode di bawah ini:

 function my_author_filter(){ $screen = get_current_screen(); global $post_type; if( $screen->id == 'edit-post' ){ $my_args = array( 'show_option_all' => 'All Authors', 'orderby' => 'display_name', 'order' => 'ASC', 'name' => 'authors_admin_filter', 'who' => 'authors', 'include_selected' => true ); if(isset($_GET['authors_admin_filter'])){ $my_args['selected'] = (int)sanitize_text_field($_GET['authors_admin_filter']); } wp_dropdown_users($my_args); } } add_action('restrict_manage_posts','my_author_filter');

Kondisi utama yang kami gunakan adalah if( $screen->id == 'edit-post') . Di sini kita menggunakan fungsi get_current_screen() WordPress yang mengembalikan id layar tempat kita berada.

Dalam hal ini ID layar admin adalah 'edit-posting'. Dengan kata lain, kami memastikan kami berada di layar administrasi posting. Jika misalnya, kami ingin menerapkan ini ke layar admin halaman yang harus kami gunakan if( $screen->id == 'edit-page' atau jika kami bekerja untuk jenis posting khusus, edit-{post_type} akan menjadi pernyataan if yang benar.

Catatan: Untuk melihat ID mana yang sesuai dengan setiap layar admin, Anda dapat memeriksa dokumentasi resmi tentang referensi layar admin.

Dalam kode di bawah ini kami memeriksa apakah seorang penulis sudah dipilih dan jika demikian, kami menerapkan nilai yang dipilih:

 if(isset($_GET['authors_admin_filter'])){ $my_args['selected'] = (int)sanitize_text_field($_GET['authors_admin_filter']); }

Terakhir, dengan memanfaatkan fungsi wp_dropdown_users WordPress kita akan menghasilkan daftar drop-down penulis sesuai dengan argumen yang kita definisikan sebelumnya.

Selanjutnya kita memilih teks yang akan menampilkan opsi 'show-all' pada argumen show_option_all . Kami memilih string "Semua penulis". Dalam argumen 'nama' kami mengisi nama yang diinginkan untuk daftar drop-down. Kami akan menggunakan nilai ini nanti untuk memfilter hasil daftar posting.

Dalam argumen 'siapa' kami mendefinisikan tipe pengguna yang akan ditanyakan, dalam kasus kami 'penulis'. Dengan argumen 'include_selected' kami memilih apakah kami ingin menyertakan ID pengguna yang dipilih dalam daftar drop-down.

Pada titik ini, jika Anda menyegarkan layar posting admin, Anda akan melihat menu tarik-turun penulis di sebelah menu filter bawaan lainnya.

Jika Anda memilih nilai dan menekan “Filter”, nilai tersebut akan tetap dipilih saat halaman dimuat ulang, tetapi hasilnya tidak akan berubah. Pada langkah berikutnya, kami akan membuat perubahan yang diperlukan untuk memfilter daftar posting agar hanya menampilkan posting yang ditautkan ke penulis yang kami pilih.

Memfilter Hasil

Sekali lagi, filter pre_get_posts akan berfungsi. Kami telah memeriksa kait ini di artikel kami Pencarian Admin WordPress: Memperluas Hasil. Kami akan menggunakan ini lagi untuk mengubah objek variabel kueri yang dibuat di layar admin pos, sebelum kueri aktual dijalankan. Di functions.php Anda, masukkan baris berikut:

 function my_author_filter_results($query){ $screen = get_current_screen(); global $post_type; if ( $screen->id == 'edit-post' ) { if(isset($_GET['authors_admin_filter'])){ $author_id = sanitize_text_field($_GET['authors_admin_filter']); if($author_id != 0){ $query->query_vars['author'] = $author_id; } } } } add_action('pre_get_posts','my_author_filter_results');

Syarat utama, seperti sebelumnya, juga diperlukan di sini untuk memastikan kita berada di layar posting admin.

$author_id = sanitize_text_field($_GET['authors_admin_filter']); menyimpan id penulis yang dipilih dalam variabel $author_id . Setelah ini, dan jika id penulis bukan 0(Semua Penulis dipilih), kami meneruskan nilai $author_id dalam parameter penulis kueri.

Dan itu saja. Sekarang posting yang ditampilkan hanya akan menjadi milik penulis/user id yang dipilih.

Kesimpulan

Pemfilteran khusus di layar Admin dapat membuat konten Anda mudah dicari oleh pengguna Admin, sesuatu yang sangat berharga ketika Anda memiliki banyak posting atau halaman. Dan tentu saja, ini hanyalah salah satu cara yang mungkin untuk menggunakan filter di tabel Admin. Ada banyak cara alternatif yang mungkin berguna bagi Anda dan semoga teknik yang kami uraikan di sini akan membantu Anda membuat filter sendiri.

Misalnya Anda mungkin ingin membuat menu filter tarik-turun dengan opsi untuk menampilkan postingan yang dibuat selama 30 hari terakhir atau mungkin filter yang mengurutkan postingan berdasarkan taksonomi apa pun. Daftar query_vars dapat membantu Anda bertukar pikiran tentang opsi yang memungkinkan!.

Bersenang-senang bermain-main dengan fitur hebat ini!

Lihat juga

Tabel Daftar Admin WordPress: Tambahkan Filter Kustom
Memulai dengan Bidang Kustom WordPress