Advertisement
  1. Code
  2. WordPress

Tips Cepat: Membuat Kolom Kustom Anda Sortable

Scroll to top
Read Time: 3 min

Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)

Dalam sebuah artikel terbaru oleh Claudio Simeone, dia menunjukkan bagaimana Anda bisa menambahkan kolom tambahan untuk posting Anda, atau jenis posting kustom, layar admin (atau menghapus yang sudah ada). Di tips cepat ini saya membangunnya dengan menunjukkan kepada Anda bagaimana untuk membuat kolom yang baru dibuat sortable.


Untuk memberitahu WordPress kolom mana yang ingin Anda daftarkan sebagai yang sortable Anda memerlukan filter ini:

Untuk posting dan halaman, $screen->id adalah masing-masing 'edit-post' dan 'edit-page'. Secara umum, untuk jenis posting dengan nama 'my-post-type', itu adalah 'edit-my-post-type'.

Filter yang melewatkan sebuah array dengan nama-nama dari kolom yang sortable sebagai kunci, dan apa yang mengurutkan sebagai nilai. Lebih tepatnya, nilai-nilai mendikte parameter 'orderby' apa yang ditetapkan dalam permintaan yang membuat tabel. Dengan cara yang sama bahwa Anda dapat menghapus kolom, Anda juga dapat membuat kolom 'unsortable' dengan menghapus mereka dari array. Mari kita lihat sebuah contoh:


Mendaftarkan Sebuah Kolom

Berdasarkan artikel Claudio, misalnya kami telah menambahkan kolom 'iris' ke posting jenis 'kue' kami, yang bisa kita lakukan sebagai berikut:

Dan kami telah menambahkan konten untuk kolom sebagai berikut:

Saya telah menyimpan irisan sebagai meta posting, tetapi kolom Anda dapat diisi oleh data lainnya.


Membuat Sebuah Kolom Sortable

Sekarang kita mendaftarkan kolom kustom kita sebagai 'sortable'. Seperti yang disebutkan di atas kami menggunakan filter manage_ {$screen->id}_sortable_column. $screen->id dalam kasus ini adalah 'edit-cake'.

Kunci dari array $columns menunjukkan kolom sortable, dan nilai mengatakan ke WordPress apa yang diatur 'orderby' ke dalam query. Jika nilainya adalah salah satu dari 'orderby' secara alami dipahami oleh WordPress (termasuk 'title', 'date', 'modified', 'comment_count', atau memang ada yang lain terdaftar di bawah WP_Query di WordPress Codex) kita bisa berhenti di sini. Pengecualian untuk aturan ini, seperti dalam contoh ini, adalah parameter 'meta_value' dan 'meta_value_num', yang memerlukan kita mengatur meta kunci juga.

Jika kita ingin mengurutkan nilai meta, atau dengan cara lain yang secara otomatis WordPress tidak memahaminya Anda harus mengatakan apa yang Anda maksud dengan mengurutkan oleh 'slice'. Jika Anda mengurutkan oleh meta posting, cara termudah untuk melakukannya adalah menghubungkan ke tindakan pre_get_posts. Ia melewatkan sebuah objek query yang dapat kita modifikasi. Perlu diketahui bahwa tindakan ini dijalankan untuk semua query default (depan dan belakang). Sementara itu tidak menyebabkan masalah, kecuali jika Anda ingin WordPress menafsirkan orderby diatur ke 'slice' di front-end juga, itu adalah ide yang baik untuk hanya mempengaruhi query di sisi admin.

Ini akan memeriksa apakah query kami diurutkan berdasarkan 'slice' dan jika iya, memberitahu WordPress agar mengurutkan secara numerik dengan nilai meta posting 'slice'. Jika Anda ingin mengurutkan nilai berdasarkan abjad maka gunakan 'meta_value' daripada 'meta_value_num'.

$query adalah sebuah objek WP_Query, jadi apa pun dapat Anda urutkan dengan menggunakan objek tersebut, Anda dapat mengurutkan oleh kolom. Untuk apa pun yang lebih rumit, Anda akan perlu meng-hook ke hook posts_orderby (atau post_clauses), tetapi itu berada di luar lingkup tip cepat ini.

Catatan: Jika sebuah posting tidak memiliki nilai yang disimpan untuk kunci meta itu maka ia tidak akan muncul ketika Anda menyortir oleh kunci meta tersebut. Hal ini berbeda dengan posting yang memiliki 0 disimpan sebagai nilai meta.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.