WordPress 3.8 memperkenalkan inti MP6 plugin yang antara lain menggunakan font ikonik yang disebut Dashicons untuk menampilkan font di dashboard.
Sekarang, perlu diketahui bahwa register_post_type memiliki argumen 'menu_icon'
yang memungkinkan untuk menentukan ikon khusus untuk entri menu admin CPT.
Dalam plugin / tema saya, saya sering menggunakan argumen itu dengan gambar ikon kustom saya yang biasanya gelap karena sebelum menu admin 3,8 memiliki latar belakang yang terang. Dengan latar belakang menu gelap default di WP 3.8 ikon saya menjadi hampir tidak terlihat.
Selain itu, saya pikir menggunakan dashicons baru untuk CPT saya akan keren.
Setelah beberapa penelitian, saya tahu saya bisa menggunakan CSS dari dashicons, sesuatu seperti
#menu-posts-mycpt div.wp-menu-image:before { content: "\f226"; }
Namun menggunakan 'menu_icon'
argumen dari register_post_type
dan css sebelumnya akan mencetak kedua ikon di WP 3.8 dan satu ikon + karakter aneh di WP 3.8-, dan tanpa 'menu_icon'
argumen penggunaan , pada versi yang lebih lama ikon default digunakan.
Aku tahu aku kondisional dapat menambahkan 'menu_icon'
di register_post_type
untuk WP 3.8- versi dan kondisional menambahkan css sebelumnya untuk WP 3.8+, tetapi:
- yang melibatkan penambahan beberapa kode (2 pernyataan kondisional) untuk setiap CPT yang terdaftar, sehingga memperbarui plugin / tema cukup sulit.
- menurut saya lebih merupakan solusi daripada solusi yang elegan
Jadi, pertanyaannya adalah:
Apakah mungkin untuk menggunakan dashicons css untuk WP 3.8+ dan menggunakan pengaturan gambar khusus melalui 'menu_icon'
param untuk versi sebelumnya dengan cara "lebih sederhana" yang tidak melibatkan penambahan 2 syarat untuk setiap CPT yang terdaftar?
Dan, jika demikian, apakah mungkin melakukannya dengan cara otomatis langsung dari register_post_type
tanpa kode tambahan?
sumber
menu_icon
Anda tidak dapat menggunakan url gambar untuk versi sebelumnya ... tapi siapa yang peduli dengan masa lalu? :)Mudah: Cukup baca bagian yang relevan dari
register_post_type()
phpDocBlock dan kemudian gunakan argumen yang tepat untukmenu_icon
: Ddashicon-groups
data:image/svg+xml;base64,
.'none'
untuk membiarkandiv.wp-menu-image
kosong, sehingga ikon dapat ditambahkan melalui CSS.sumber
svg-painer.js
, inti js library yang digunakan untuk menangani perubahan warna, bisa sangat memakan waktu jika ikon lebih "kompleks" daripada standar dashicons. * Opsi ketiga (ikon kosong) tidak hanya valid untuk WP 3.8+, tetapi sejak lama ... dan menggunakan css adalah sesuatu yang ingin saya hindari (sesuai pertanyaan). Jadi +1 untuk menyatukan semua opsi, tapi saya pikir jawaban yang diterima sudah menjawab pertanyaan saya. PS senang melihat berlian dekat nama Anda :)svg-painter.js
file tersebut. Tidak mengetahuinya karena saya belum mencoba.Saya menjawab sendiri karena hari ini saya bertanya pada diri sendiri 2 pertanyaan yang saya posting, dan meluangkan waktu untuk menemukan jawaban. Setelah saya menemukan solusi, saya ingin membagikannya, tetapi solusi lain sangat tepat dan saya siap untuk menerima solusi apa pun yang saya temukan lebih baik daripada milik saya. Pengeditan dan peningkatan solusi saya dihargai dan tidak dianjurkan.
Edit
Setelah jawaban Rarst saya telah mengedit kode. Sekarang fungsinya menggunakan kelas dashicons standar, tetapi juga memungkinkan untuk menentukan url gambar gaya lama dalam
menu_icon
argumen dan kelas dashicon baru dalammenu_dashicon
argumen.Alur kerja
Pertama saya pikir saya pikir adalah
register_post_type
, menembakkan suatu tindakan,,registered_post_type
yang lolos ke fungsi kait argumen dilewatiregister_post_type
, tanpa menyaring mereka, jadi mungkin untuk membuat argumen kustom untuk fungsi itu.Jadi saya memutuskan untuk meneruskan argumen
'menu_dashicon'
untuk melewati dasbor kustom.Setelah itu saya berpikir untuk membuat kelas yang mendengarkan argumen itu, menyimpan ikon dalam variabel kelas. Kelas yang sama dapat bertanggung jawab untuk
$menu
array pada hook yang tepat dan:'menu_icon'
dan'menu_dashicon'
paramSaya membuat kode dalam satu file, dengan cara ini dapat dengan mudah dimasukkan dalam setiap tema / plugin atau bahkan digunakan sebagai plugin MU dan setelah itu kita dapat menggunakan
'menu_dashicon'
argumen baru di setiap tema dan / atau plugin yang diinstal.Saya juga menambahkan header plugin minimal yang memungkinkan untuk menggunakannya sebagai plugin mandiri, tapi mungkin itu cara yang kurang bermanfaat untuk digunakan.
Cara Penggunaan
Di dalam
register_post_type
hanya meneruskan'menu_dashicon'
argumen dengan nilai kelas dashicon ( tanpa awalan 'dashicons-'):Itu saja. Dapatkan nama kelas ikon Dashicons dari situsnya .
Jadi di sini kodenya:
Ini juga tersedia sebagai Gist
Dua CPT: "Gagasan" dan "Galeri" menggunakan Dashicons. Perhatikan perubahan warna otomatis dengan berbagai skema warna admin.
sumber
Saya cukup menambahkan baris ini ke kode yang mendaftarkan jenis posting khusus:
Ini kode lengkapnya
Tidak perlu menambahkan CSS apa pun.
sumber