Saat mengedit salah satu jenis posting khusus saya, saya ingin dapat mencantumkan semua entri berdasarkan bidang khusus alih-alih tanggal diterbitkan (yang, untuk jenis posting khusus mungkin tidak relevan). Saya mendapat petunjuk dari komentar sebuah posting blog tentang jenis posting kustom dan penulis mengatakan itu mungkin dan bahkan dia membuatnya sehingga Anda dapat mengklik nama kolom untuk jenis kustom. Dia menyebutkan posts_orderby
fungsi yang saya catat dalam komentar saya sendiri tetapi sekarang saya dapat menemukan posting blog lagi. Ada saran? Saya melihat satu solusi yang digunakan
add_action('wp', 'check_page');
Dan check_page
fungsi yang digunakan add_filter
untuk mengubah kueri tapi saya cukup yakin itu hanya akan berfungsi di file tema, bukan di area admin.
custom-post-types
tooshel
sumber
sumber
Jawaban:
Seperti yang mungkin Anda bayangkan dengan kurangnya jawaban yang diberikan, solusinya tidak sepenuhnya sepele. Apa yang saya lakukan adalah membuat contoh yang cukup lengkap yang mengasumsikan tipe posting kustom "
movie
" dan kunci bidang kustom " Genre ".Penafian : ini bekerja dengan WP3.0 tapi saya tidak yakin itu akan bekerja dengan versi sebelumnya.
Anda pada dasarnya perlu menghubungkan dua (2) kait untuk membuatnya berfungsi dan dua lainnya (2) untuk membuatnya jelas dan bermanfaat.
Hook pertama adalah '
restrict_manage_posts
' yang memungkinkan Anda memancarkan HTML<select>
di area di atas daftar posting tempat " Tindakan Massal " dan " Tampilkan Tanggal ". Kode yang diberikan akan menghasilkan fungsionalitas " Urutkan menurut: " seperti yang terlihat dalam cuplikan layar ini:(sumber: mikeschinkel.com )
Kode menggunakan SQL langsung karena tidak ada fungsi WordPress API untuk memberikan daftar semua meta_keys untuk jenis posting (kedengarannya seperti tiket trac masa depan bagi saya ...) Bagaimanapun, ini kodenya. Perhatikan bahwa ia mengambil jenis posting dari
$_GET
dan memvalidasi untuk memastikan itu adalah jenis posting yang validpost_type_exists()
serta menjadimovie
jenis posting (kedua cek itu berlebihan tetapi saya melakukannya untuk menunjukkan kepada Anda bagaimana jika Anda tidak ingin kesulitan) kode jenis posting.) Terakhir saya menggunakansortby
parameter URL karena tidak bertentangan dengan hal lain di WordPress:Langkah kedua yang diperlukan adalah menggunakan
parse_query
hook yang dipanggil setelah WordPress memutuskan pertanyaan apa yang harus dijalankan tetapi sebelum menjalankan query. Di sini kita bisa mengatur nilaiorderby
danmeta_key
dalamquery_var
array kueri yang didokumentasikan dalam Codex padaorderby
parameter untukquery_posts()
. Kami menguji untuk memastikan bahwa:is_admin()
),$pagenow=='edit.php'
),post_type
parameter URL sama denganmovie
, dansortby
parameter URL dan tidak diberi nilai ' Tidak Ada 'Jika semua tes lulus, kami kemudian menetapkan
query_vars
(seperti yang didokumentasikan di sini )meta_value
dansortby
nilai kami untuk ' Genre ':Dan itu semua yang perlu Anda lakukan; "
posts_order
" atau "wp
" kait tidak diperlukan! Tentu saja Anda benar-benar perlu melakukan lebih banyak; Anda perlu menambahkan beberapa kolom pada halaman Anda yang mencantumkan posting sehingga Anda benar-benar dapat melihat nilai-nilai yang disortir oleh jika tidak, pengguna akan menjadi sangat bingung. Jadi tambahkanmanage_{$post_type}_posts_columns
kail, dalam hal inimanage_movie_posts_columns
. Pengait ini dilewati array default kolom dan untuk kesederhanaan saya hanya menggantinya dengan dua kolom standar; kotak centang (cb
) dan nama posting (title
). (Anda dapat memeriksaposts_columns
denganprint_r()
untuk melihat apa lagi yang tersedia secara default.)Saya memutuskan untuk menambahkan " Diurutkan Menurut: " ketika ada
sortby
parameter URL dan ketika tidakNone
:Akhirnya kami menggunakan
manage_pages_custom_column
pengait untuk benar-benar menampilkan nilai ketika ada posting dari jenis posting yang sesuai dan dengan tes yang mungkin berlebihan untukis_admin()
dan$pagenow=='edit.php'
. Ketika adasortby
parameter URL, kami mengekstrak nilai bidang khusus yang sedang disortir oleh tampilan di daftar kami. Begini tampilannya (ingat, ini adalah data uji sehingga tidak ada komentar dari galeri kacang pada klasifikasi film! :):(sumber: mikeschinkel.com )
Dan ini kodenya:
Perhatikan bahwa ini hanya mengambil " Genre " pertama untuk a
movie
, yaitu meta_value pertama dalam kasus beberapa nilai untuk kunci yang diberikan. Tapi sekali lagi saya tidak yakin bagaimana cara kerjanya sebaliknya!Dan bagi mereka yang tidak terbiasa dengan di mana menempatkan kode ini, Anda dapat memasukkannya ke dalam plugin atau lebih mungkin bagi pemula dalam
functions.php
file di tema Anda saat ini.Bagaimana ini membantu.
sumber
'months_dropdown_results'
dan'restrict_manage_posts'
. Upvote PS selalu dihargai. :)Pada WordPress 3.1 (Saya menggunakan beta) kolom sekarang dapat disortir melalui judul mereka.
Posting berikut merinci bagaimana mengimplementasikannya.
http://scribu.net/wordpress/custom-sortable-columns.html
sumber
Inilah solusi sederhana:
Cukup ganti JENIS POST ANDA dan 'your_custom_field'
sumber