Saya perlu membuat kotak meta kiriman khusus untuk es jenis kiriman saya "Slideshow" (jenis kiriman ini sudah dibuat). Setiap metabox akan menyimpan konten di setiap slide slide dan menyimpannya ke bidang khusus yang sesuai. Setiap metabox harus berisi bidang-bidang berikut:
- Judul (Bidang Teks)
- Gambar (Entah Bidang Teks untuk URL img atau idealnya Daftar Dropdown yang menunjukkan gambar mini dari gambar yang dilampirkan pada kiriman)
- Kode Sematan (Area Teks)
- Penjelasan (wysiwyg)
- Sembunyikan Slide (Centang untuk digunakan untuk menyembunyikan slide sementara tanpa menghapusnya)
- Hapus Slide (tombol yang menghapus isi kolom meta pos yang diisi oleh slide ini)
Saya juga ingin tombol di suatu tempat yang memungkinkan saya untuk "Menambahkan slide" sehingga ketika diklik, itu menambahkan lain "Slide" Custom Meta Box yang merupakan duplikat dari yang pertama tetapi menambahkan nomor tambahan untuk setiap bidang meta posting kustom. Saat ini saya hanya memiliki 15 metabox dan template Slideshow diatur sedemikian rupa sehingga jika hanya 5 dari metabox yang diisi maka hanya 5 slide yang ditampilkan.
Akhirnya, saya ingin dapat memesan ulang slide, baik dengan "Seret dan Jatuhkan" atau dengan Bidang Teks lain tempat saya dapat mengetikkan nomor pesanan.
Saya mendapatkannya hampir di mana saya membutuhkannya dengan plugin "More Fields" dan beberapa bantuan kode dari Rarst. Dengan plugin "More Fields", saya memiliki bidang-bidang berikut di setiap metabox:
- Judul (Bidang Teks)
- Gambar (Daftar tarik-turun gambar yang dilampirkan pada pos)
- Kode Sematan (Area Teks)
- Penjelasan (wysiwyg)
- Sembunyikan Slide (Centang untuk digunakan untuk menyembunyikan slide sementara tanpa menghapusnya)
Berikut ini adalah tangkapan layar bagaimana saya membuatnya melalui plugin "More Fields":
Masalah dengan ini adalah bahwa tidak ada cara untuk menghapus slide setelah dibuat karena "Bidang Lainnya" tidak digunakan di <?php delete_post_meta($post_id, $key, $value); ?>
mana pun. Masalah lain dengan plugin ini adalah terlalu tidak dapat diandalkan dan sering rusak dengan pembaruan.
Saya telah mampu menerapkan solusi serupa dengan metabox khusus saya sendiri yang meliputi:
- Judul (Bidang Teks)
- Gambar (Bidang Teks untuk URL img)
- Kode Sematan (Area Teks)
- Deskripsi (Area Teks)
- Sembunyikan Slide (Centang untuk digunakan untuk menyembunyikan slide sementara tanpa menghapusnya)
Dengan implementasi ini saya sepertinya tidak bisa mendapatkan beberapa bidang TinyMCE untuk bekerja atau kotak dropdown gambar. Kode TinyMCE tampaknya bekerja sampai saya menambahkan kode yang membuat salinan tambahan dari metabox pertama di mana titik saya mendapatkan error ini tepat di atas lapangan di mana tombol TinyMCE harus: Warning: array_push() [function.array-push]: First argument should be an array...
.
Juga, saat ini saya bergantung pada penulis saya untuk tahu untuk menaruh video atau gambar pada SETIAP BAIK dan tidak apa-apa, tetapi mungkin lebih baik untuk memiliki tombol radio yang memungkinkan mereka memilih mana yang slide (mungkin default untuk image) yang terikat pada pernyataan tampilan bersyarat dalam template tampilan slide.
Saya menangani pengunggahan gambar melalui kotak "Featured Image" bawaan di sidebar meskipun saya tidak keberatan dengan metabox khusus yang hanya mengatakan "Unggah Gambar" di bagian atas panel tulis.
Pada akhirnya saya mencari tampilan slide yang mirip dengan ini: http://www.nytimes.com/slideshow/2010/08/10/science/20100810angier-1.html . Saya ingin milik saya juga dapat memiliki video sebagai konten dalam slide, bukan gambar. Saya membutuhkan panel Admin yang intuitif dan mudah digunakan untuk penulis saya (mereka tidak terlalu ahli dalam bidang teknologi dan tidak dapat diandalkan menggunakan html dan / atau shortcode). Kalau-kalau itu tidak jelas dari contoh, setiap slide harus menghasilkan tampilan halaman baru.
Penataan ulang Drag'n'Drop bukan prioritas tinggi tetapi akan keren. Saya menemukan sebuah plugin yang menangani ini dengan sangat baik: SlideDeck . Sayangnya plugin tidak sesuai dengan kebutuhan saya tetapi cara mereka menangani pemesanan slide cukup bagus. Ini adalah metabox terpisah di bilah sisi yang memungkinkan Anda menyeret slide ke dalam urutan yang Anda suka. Ini juga cara Anda menambahkan slide, dengan mengklik tombol "Tambahkan Slide" yang menambahkan Metabox Slide lain ke panel tulis. Ini screenshotnya:
Anda juga dapat melihat lebih banyak tangkapan layar dalam aksi di repositori wordpress .
Ini semua kode saya:
Fungsi-fungsi pengaturan Jenis Posting Slideshow dan Pagination Slideshow: http://loak.pastebin.com/g63Gf186
Kode asli dari DeluxeBloggingTips.com (DBT) tempat saya mendasarkan Metabox saya dari: http://loak.pastebin.com/u9YTQrxf
Versi kode DBT yang saya modifikasi untuk memberi saya versi tambahan dari metabox yang sama: http://loak.pastebin.com/WtxGdPrN
Versi modifikasi dari kode DBT yang dibuat Chris Burbridge untuk memungkinkan beberapa contoh TinyMCE: http://loak.pastebin.com/Mqb3pKhx Dengan kode ini TinyMCE berfungsi.
Modifikasi saya dari kode Burbridge yang mencoba untuk memasukkan peningkatan saya dan bidang yang memungkinkan Anda memilih gambar dari daftar dropdown semua gambar yang dilampirkan pada posting: http://loak.pastebin.com/xSuenJTK Dalam upaya ini, TinyMCE rusak dan dropdown tidak berfungsi.
Ini mungkin tidak masalah tetapi jika Anda bertanya-tanya, ini adalah kode yang saya gunakan untuk menarik kode sematan dari meta pos kustom, ubah ukurannya, dan masukkan di pos: http://loak.pastebin.com / n7pAzEAw
Ini adalah versi yang diedit dari pertanyaan asli untuk mencerminkan status proyek saat ini dan menjawab pertanyaan yang diposting di komentar. Terima kasih kepada Chris_O karena telah memberikan hadiah ini. Juga, terima kasih kepada Rarst dan Justin karena telah membantu saya dengan banyak hal ini di forum ThemeHybrid.com . Saya telah menghabiskan berjam-jam untuk hal ini dan saya mandek (saya menghabiskan beberapa jam sendirian di Pertanyaan ini). Bantuan apa pun akan sangat dihargai.
Jawaban:
Dari hal-hal yang terlihat, taruhan teraman Anda dan rute termudah adalah dengan garpu plugin More Fields khusus untuk penggunaan Anda. Dua fitur terbesar yang saya lihat garpu Anda butuhkan adalah bidang "pabrik" dan antarmuka drag-and-drop.
Banyak Bidang
Saran saya adalah untuk melihat kelas Widget WordPress dan menggunakannya sebagai model untuk pabrik bidang Anda - pada dasarnya, pinjam kemampuan untuk membuat beberapa contoh bidang setelah Anda memiliki kerangka kerja yang dibangun untuk itu.
Ini adalah inti dari bagaimana beberapa widget bekerja di sidebar:
WP_Widget
kelas.delete
perintah sederhana , dan mengatur pemosisiannya secara eksplisit melalui antarmuka drag-and-drop AppearanceSeret dan lepas
Sekali lagi, saya sarankan mencari sistem widget WordPress untuk inspirasi. Kami sudah memiliki antarmuka drag-and-drop yang cukup intuitif yang diatur di sana, sehingga akan cukup mudah untuk mengarahkan ulang sebagian besar kode yang sama di tempat lain. Atau, jika Anda ingin menjadi benar-benar mewah, Anda dapat menerapkan sistem seret-dan-jatuhkan sendiri di dalam bidang meta khusus yang terpisah.
Jadi setiap slide akan ditentukan oleh kotak meta khusus yang ditautkan ke pos. Urutan slide akan ditetapkan oleh kotak meta khusus yang juga ditautkan ke pos. Saya akan merekomendasikan mengirim pembaruan slide melalui AJAX sehingga Anda dapat secara dinamis memperbarui kotak meta urutan slide berdasarkan informasi (ini mencegah harus secara manual menekan "pembaruan" dan menunggu halaman untuk memuat ulang sebelum memindahkan hal-hal di sekitar).
jQuery UI memiliki antarmuka " draggable " yang hebat yang dapat dengan mudah Anda manipulasi untuk keperluan Anda di dalam kotak meta khusus ini. Bagian yang sulit bukanlah membangun antarmuka, melainkan mendapatkan komunikasi yang konsisten dan akurat antara kotak meta dan kumpulan kotak meta slide di tempat lain pada halaman.
Singkatnya
Apa yang saya kumpulkan dari pos Anda adalah bahwa Anda memiliki solusi yang bisa diterapkan:
Cara saya mendekati ini adalah dengan mengabstraksi proses pembuatan meta khusus ke kelas yang dapat saya gunakan berulang-ulang untuk membuat bidang meta khusus baru. Lalu saya akan memperluas kelas untuk menginisialisasi dua jenis kotak meta: satu untuk slide, satu untuk struktur slide. Saya juga membangun ke dalam kotak meta struktur slide kemampuan untuk secara dinamis membuat kotak meta slide baru (kotak meta slide akan menampung tindakan "hapus" mereka sendiri).
Seluruh tampilan slide akan disimpan bukan oleh kotak meta slide, tetapi oleh kotak geser struktur meta ke dalam bidang meta khusus untuk posting - meta khusus akan menjadi array yang bergerigi, dengan masing-masing slide diwakili sebagai array di dalamnya - di memesan . Menyesuaikan urutan rangkai salindia dalam kotak meta struktur akan mengatur ulang larik dan menyimpan kembali meta pos. Dengan cara ini saya hanya memiliki 1 meta nilai untuk dibaca kembali ketika saya ingin mengakses slideshow.
Antara SlideDeck, More Fields, dan kode khusus yang telah Anda buat sejauh ini, Anda sudah memiliki sebagian besar solusi Anda ... Anda hanya perlu membuat semuanya bekerja bersama pada saat yang sama. Saya akan fokus pada implementasi root terlebih dahulu sebelum menambahkan hiasan JavaScript - secara dinamis membuat, memodifikasi, menyimpan, dan menghapus slide lebih penting daripada editor teks kaya, IMO. Dapatkan itu retak dulu. Kemudian turunkan sistem pemesanan. Kemudian Anda bisa fokus untuk mendapatkan beberapa instance TinyMCE yang bekerja di halaman.
sumber
Saya menemukan ini, yang persis seperti yang Anda (saya) cari -> http://pippinsplugins.com/drag-and-drop-order-for-plugin-options/
sumber