Saya membuat widget, perlu menyimpan sekitar 10 ID. Saat ini saya menggunakan metode bidang berikut untuk menyimpan masing-masing ID di bidang yang terpisah. Ini menyimpan data masing-masing bidang secara terpisah di wordpress. Apakah mungkin untuk menyimpan data semua bidang hanya dalam satu baris di wordpress untuk examlpe menggunakan array?
<input
class="widefat"
id="<?php echo $this->get_field_id('item1_id'); ?>"
name="<?php echo $this->get_field_name('item1_id'); ?>"
value="<?php echo $instance['item1_id']; ?>"
/>
<input
class="widefat"
id="<?php echo $this->get_field_id('item2_id'); ?>"
name="<?php echo $this->get_field_name('item2_id'); ?>"
value="<?php echo $instance['item2_id']; ?>"
/>
$instance
adalah array dan berisi semua nilai. Dan apa yang Anda maksud dengan 'untuk menyimpan data semua bidang hanya dalam satu baris'? Apakah maksud Anda satu baris basis data?Jawaban:
Anda harus mengumpulkan beberapa bidang dengan nama yang sama seperti ini ...
... dan sesuaikan logika widget Anda dengan ini.
Ini adalah widget demo yang sangat sederhana:
Backend
Paling depan
sumber
printf
Sintaks yang sangat eleganclass="widefat"
untuk bidang.Jawaban di atas baik jika Anda membutuhkan bidang yang diberi nomor. Dalam kasus saya, saya tidak melakukannya. Saya memiliki widget dengan opsi yang memungkinkan pengguna memilih sejumlah kategori untuk digunakan dalam widget.
Ini widget saya
form
. - Tiga hal penting di siniarray()
jika nilai widget tidak disetel<label>
name
atribut formulir , perhatikan bahwa saya lampirkan[]
di bagian akhir. Ini memberi tahu PHP bahwa saya mengirimkan array nilai untuk kunci ini<label><input type="checkbox" ...></label>
. - Setiap kotak centang kami tidak akan memilikiid
atribut unik , sehingga<label>
for
atribut tidak akan berfungsi. Kami dapat membuat ID unik, tapi itu merepotkan. Jika Anda hanya membungkus label di sekitar input, label akan dikaitkan dengan benar tanpa perlu menghubungkanfor
+id
Sekarang kodenya
Dan inilah fungsi pembaruan saya
Saya tertarik untuk menyimpan ID Kategori dalam array, yang merupakan angka, jadi saya gunakan
array_map
denganintval
untuk memastikan bahwa semua datum yang dikirimkan adalah bilangan bulat yang valid. Selain itu, saya gunakanarray_filter
untuk menghapus kiriman yang tidak valid.Sangat sulit untuk menggambarkan hal-hal WordPress ini. Jika Anda memiliki pertanyaan, saya akan dengan senang hati menjelaskan.
sumber