Saya sedang dalam perjalanan setiap malam untuk membangun widget sekali pakai khusus .
Segera setelah satu instance ditambahkan ke panel sidebar di Customizer , kontrolnya pada panel Widgets yang tersedia harus ditampilkan sebagai dinonaktifkan (atau sebagai alternatif, dihilangkan seluruhnya).
Begini tampilannya (perhatikan widget yang "dinonaktifkan" secara visual di sebelah kanan):
Widget khusus terdaftar dan semuanya, tapi saya terjebak dengan persyaratan sekali pakai.
Spesifikasi
- Skala bukanlah masalah. Boleh saja menganggap hanya 1 bilah sisi yang terdaftar. Pendekatannya adalah membatasi penggunaan widget menjadi 1 per bilah sisi, atau 1 per semua bilah sisi yang terdaftar — keduanya akan sama-sama baik untuk saat ini.
- Halaman Widget di back-end tidak menjadi masalah. Ini tidak diperlukan untuk bekerja dengan baik di halaman Widget di bawah Tampilan di back-end. Hanya perlu bekerja di Customizer.
Pertanyaan
- Sekitar 250 tahun yang lalu, semua widget digunakan untuk “sekali pakai”. Adakah yang tahu cara yang sah untuk mengembalikan waktu tersebut dan membuat widget khusus hanya digunakan 1x melalui API Widget?
- Jika tidak (yang saya asumsikan setelah menggali cukup banyak file inti), saya mungkin akan menunda pendekatan berbasis CSS (pointer-events, overlay elemen pseudo, apa pun). Apakah ada orang yang mau membantu pengetahuan Customizer / JavaScript saya yang sangat terbatas dengan pendekatan dasar tentang cara menambah / menghapus kelas CSS khusus ke kontrol widget di panel "tersedia" (panel di sebelah kanan) setelah instance dari widget tersebut memiliki telah ditambahkan / dihapus ke panel sidebar?
Apa yang saya coba sejauh ini
- Menggali banyak file inti.
- Baca ini , dan ini , tetapi tidak ada yang tampak praktis.
- Bermain-main dengan peristiwa jQuery
widget-added
,widget-updated
danwidget-synced
, tetapi melewatkan acara untuk “dihapus widget”.
Terima kasih banyak sebelumnya!
Pembaruan: Belum menempatkan bukti konsep saya pada repo publik, tentu saja akan dilakukan.
Larutan
Saya membungkus solusi yang dibagikan dengan baik oleh kraftner di bawah ini dalam sebuah bukti konsep plugin di GitHub .
widgets
theme-customizer
glueckpress
sumber
sumber
WP_Widget
, misalnya: gist.github.com/westonruter/7141599Jawaban:
Pendekatan
Jadi saya telah melihat ini dan pendekatan saya adalah ini:
Penolakan
Ini memiliki batasan sebagai berikut:
Kode
Sekarang kita telah melakukan Penafian, mari kita lihat kode:
Sidenote: Gunakan
customize_controls_enqueue_scripts
tindakan untuk menambahkan skrip.Anda mungkin dapat memperpanjang ini untuk membatasinya agar berfungsi sebagai basis per sidebar alih-alih secara global. Saya akan mengatakan mendengarkan aktivasi sidebar dan kemudian menghitung widget di sidebar itu. Tetapi saya tidak menemukan waktu untuk menyelidiki hal itu juga.
sumber