Devo creare una meta box (s) personalizzata per il mio tipo di post personalizzato "Presentazione" (questo tipo di post è già stato creato). Ogni metabox conterrà il contenuto di ciascuna diapositiva e lo salverà nei corrispondenti campi personalizzati. Ogni metabox dovrebbe contenere i seguenti campi:
- Titolo (campo di testo)
- Immagine (o un campo di testo per l'URL img o idealmente un elenco a discesa che mostra le anteprime delle immagini allegate al post)
- Codice da incorporare (area di testo)
- Descrizione (wysiwyg)
- Nascondi la diapositiva (casella di controllo da utilizzare per nascondere temporaneamente una diapositiva senza eliminarla)
- Elimina diapositiva (pulsante che elimina i contenuti dei meta campi post compilati da questa diapositiva)
Vorrei anche un pulsante da qualche parte che mi permetta di "Aggiungi una diapositiva", quindi quando viene cliccato, aggiunge un'altra Meta Box "Slide" personalizzata che è un duplicato del primo ma aggiunge un numero incrementale a ciascun campo meta post personalizzato. Al momento ho solo 15 metabox e il modello di presentazione è impostato in modo tale che se solo 5 dei metabox sono compilati, vengono visualizzate solo 5 diapositive.
Infine, vorrei poter riordinare le diapositive, sia con "Trascina selezione" sia tramite un altro campo di testo in cui posso digitare il numero dell'ordine.
L'ho ottenuto quasi dove ne ho bisogno con il plug-in "Altri campi" e un po 'di aiuto con il codice da Rarst. Con il plug-in "Altri campi" ho i seguenti campi in ogni metabox:
- Titolo (campo di testo)
- Immagine (un elenco a discesa delle immagini allegate al post)
- Codice da incorporare (area di testo)
- Descrizione (wysiwyg)
- Nascondi la diapositiva (casella di controllo da utilizzare per nascondere temporaneamente una diapositiva senza eliminarla)
Ecco uno screenshot di come l'ho installato tramite il plug-in "Altri campi":
Il problema è che non è possibile eliminare una diapositiva una volta creata perché "Altri campi" non viene utilizzato da <?php delete_post_meta($post_id, $key, $value); ?>
nessuna parte. L'altro problema con il plug-in è che è troppo inaffidabile e si interrompe frequentemente con gli aggiornamenti.
Sono stato in grado di implementare una soluzione simile con i miei metabox personalizzati che include:
- Titolo (campo di testo)
- Immagine (campo di testo per l'URL img)
- Codice da incorporare (area di testo)
- Descrizione (area di testo)
- Nascondi la diapositiva (casella di controllo da utilizzare per nascondere temporaneamente una diapositiva senza eliminarla)
Con questa implementazione non riesco a far funzionare i molteplici campi TinyMCE o la casella a discesa delle immagini. Il codice TinyMCE sembra funzionare fino a quando aggiungo il codice che creano copie incrementali del primo METABOX ea quel punto ho questo diritto errore di cui sopra il campo in cui i pulsanti TinyMCE dovrebbero essere: Warning: array_push() [function.array-push]: First argument should be an array...
.
Inoltre, in questo momento sto facendo affidamento sui miei scrittori per sapere di inserire IN OGNI un video o un'immagine per ogni diapositiva e va bene, ma potrebbe essere meglio avere un pulsante di opzione che consente loro di scegliere quale sia la diapositiva (probabilmente l'impostazione predefinita è immagine) collegata a un'istruzione di visualizzazione condizionale nel modello di presentazione.
Sto gestendo i caricamenti di immagini tramite la casella "Immagine in primo piano" integrata nella barra laterale, anche se non mi dispiacerebbe un metabox personalizzato che dicesse semplicemente "Carica immagini" nella parte superiore del pannello di scrittura.
Alla fine sto cercando una presentazione simile a questa: http://www.nytimes.com/slideshow/2010/08/10/science/20100810angier-1.html . Voglio che anche il mio sia in grado di avere un video come contenuto nella diapositiva anziché un'immagine. Ho bisogno di un pannello di amministrazione intuitivo e facile da usare per i miei scrittori (non sono molto esperti di tecnologia e non sono affidabili usando HTML e / o codici brevi). Nel caso in cui non sia chiaro dall'esempio, ogni diapositiva dovrebbe generare una nuova visualizzazione di pagina.
Il riordino Drag'n'Drop non è una priorità, ma sarebbe bello. Ho trovato un plugin che lo gestisce davvero bene: SlideDeck . Sfortunatamente il plugin non soddisfa le mie esigenze, ma il modo in cui gestiscono l'ordinamento delle diapositive è piuttosto fluido. È un metabox separato nella barra laterale che ti consente di trascinare le diapositive nell'ordine che preferisci. Questo è anche il modo in cui aggiungi le diapositive, facendo clic sul pulsante "Aggiungi diapositiva" che aggiunge un'altra diapositiva Metabox al pannello di scrittura. Ecco uno screenshot:
Puoi anche vedere altri screenshot in azione nel repository wordpress .
Ecco tutto il mio codice:
Le funzioni che impostano il mio tipo di post e l'impaginazione dello slideshow: http://loak.pastebin.com/g63Gf186
Il codice originale di DeluxeBloggingTips.com (DBT) su cui ho basato i miei Metabox: http://loak.pastebin.com/u9YTQrxf
La versione del codice DBT che ho modificato per fornirmi versioni incrementali dello stesso metabox: http://loak.pastebin.com/WtxGdPrN
Una versione modificata del codice DBT creata da Chris Burbridge per consentire più istanze di TinyMCE: http://loak.pastebin.com/Mqb3pKhx Con questo codice i TinyMCE funzionano.
La mia modifica del codice di Burbridge che tenta di incorporare la mia incrementazione e un campo che consente di scegliere l'immagine da un elenco a discesa di tutte le immagini allegate al post: http://loak.pastebin.com/xSuenJTK In questo tentativo, TinyMCE è rotto e il menu a discesa non funziona.
Questo probabilmente non importa, ma nel caso ti stia chiedendo, ecco il codice che uso per estrarre il codice di incorporamento dal meta post personalizzato, ridimensionarlo e inserirlo nel post: http://loak.pastebin.com / n7pAzEAw
Questa è una versione modificata della domanda originale per riflettere lo stato corrente del progetto e rispondere alle domande postate nei commenti. Grazie a Chris_O per avermi dato la grazia. Inoltre, grazie a Rarst e Justin per avermi aiutato molto con questo nel forum ThemeHybrid.com . Ho trascorso ore e ore su questo e sono bloccato (ho trascorso un paio d'ore da solo su questa domanda). Qualsiasi aiuto sarebbe molto apprezzato.