Muszę utworzyć niestandardowe pola meta (postów) dla mojego niestandardowego typu postu „Pokaz slajdów” (ten typ postu jest już utworzony). Każdy metabox przechowuje zawartość na każdym slajdzie slajdu i zapisuje go w odpowiednich polach niestandardowych. Każdy metaboks powinien zawierać następujące pola:
- Tytuł (pole tekstowe)
- Obraz (pole tekstowe dla adresu URL img lub najlepiej lista rozwijana pokazująca miniatury obrazów dołączonych do posta)
- Kod do umieszczenia (obszar tekstowy)
- Opis (wysiwyg)
- Ukryj slajd (pole wyboru, aby tymczasowo ukryć slajd bez usuwania go)
- Usuń slajd (przycisk, który usuwa zawartość pól meta wpisu, które zostały wypełnione przez ten slajd)
Chciałbym również gdzieś przycisk, który pozwala mi „dodać slajd”, więc po kliknięciu dodaje on kolejną niestandardową meta-box „Slajd”, który jest duplikatem pierwszego, ale dodaje przyrostową liczbę do każdego niestandardowego pola meta. Obecnie mam tylko 15 metaboksów, a szablon pokazu slajdów jest skonfigurowany w taki sposób, że jeśli tylko 5 metaboksów jest wypełnionych, wyświetlanych jest tylko 5 slajdów.
Na koniec chciałbym móc ponownie uporządkować slajdy, czy to za pomocą funkcji „Przeciągnij i upuść”, czy innego pola tekstowego, w którym mogę wpisać numer zamówienia.
Dostałem go prawie tam, gdzie go potrzebuję, dzięki wtyczce „More Fields” i pomocy kodu Rarst. Dzięki wtyczce „Więcej pól” w każdym metaboksie mam następujące pola:
- Tytuł (pole tekstowe)
- Obraz (lista rozwijana obrazów dołączonych do posta)
- Kod do umieszczenia (obszar tekstowy)
- Opis (wysiwyg)
- Ukryj slajd (pole wyboru, aby tymczasowo ukryć slajd bez usuwania go)
Oto zrzut ekranu przedstawiający konfigurację za pomocą wtyczki „More Fields”:
Problem polega na tym, że po utworzeniu nie ma możliwości usunięcia slajdu, ponieważ „Więcej pól” nigdzie nie jest używany <?php delete_post_meta($post_id, $key, $value); ?>
. Innym problemem związanym z wtyczką jest to, że jest zbyt zawodna i często psuje się wraz z aktualizacjami.
Udało mi się wdrożyć podobne rozwiązanie z własnymi niestandardowymi metaboksami, które obejmują:
- Tytuł (pole tekstowe)
- Obraz (pole tekstowe dla img URL)
- Kod do umieszczenia (obszar tekstowy)
- Opis (obszar tekstowy)
- Ukryj slajd (pole wyboru, aby tymczasowo ukryć slajd bez usuwania go)
Dzięki tej implementacji nie mogę uruchomić wielu pól TinyMCE ani pola rozwijanego obrazu. Kod TinyMCE wydaje się działać, dopóki nie dodać kod, który tworzy przyrostowe kopie pierwszej METABOX w którym momencie uzyskać to prawo błędu nad polem gdzie przyciski TinyMCE powinno być: Warning: array_push() [function.array-push]: First argument should be an array...
.
Ponadto teraz polegam na moich pisarzach, aby umieścili W KAŻDYM slajdzie wideo lub obraz dla każdego slajdu i jest w porządku, ale może lepiej mieć przycisk radiowy, który pozwala im wybrać, który slajd jest (prawdopodobnie domyślnie obraz), który jest powiązany z instrukcją wyświetlania warunkowego w szablonie pokazu slajdów.
Obsługuję przesyłanie zdjęć za pomocą wbudowanego pola „Featured Image” na pasku bocznym, chociaż nie miałbym nic przeciwko niestandardowemu metaboksowi, który po prostu powiedział „Upload Images” w górnej części panelu zapisu.
W końcu szukam pokazu podobnego do tego: http://www.nytimes.com/slideshow/2010/08/10/science/20100810angier-1.html . Chcę, aby mój mógł mieć również wideo jako treść na slajdzie zamiast obrazu. Potrzebuję intuicyjnego i łatwego w obsłudze panelu administracyjnego dla moich pisarzy (nie są oni zbytnio obeznani z technologią i nie są niezawodni przy użyciu html i / lub skrótów). Na wszelki wypadek nie widać z przykładu, każdy slajd powinien wygenerować nową odsłonę.
Zmiana kolejności Drag'n'Drop nie jest priorytetem, ale byłoby fajnie. Znalazłem wtyczkę, która radzi sobie z tym naprawdę dobrze: SlideDeck . Niestety wtyczka nie odpowiada moim potrzebom, ale sposób, w jaki radzą sobie z porządkowaniem slajdów, jest całkiem sprytny. Jest to oddzielny metaboks na pasku bocznym, który pozwala przeciągać slajdy w wybranej kolejności. W ten sposób dodajesz slajdy, klikając przycisk „Dodaj slajd”, który dodaje kolejny Metabox Slajdu do panelu zapisu. Oto zrzut ekranu:
Możesz także zobaczyć więcej zrzutów ekranu z tego działania w repozytorium wordpress .
Oto cały mój kod:
Funkcje konfigurujące mój typ postu pokazu slajdów i paginację pokazu slajdów: http://loak.pastebin.com/g63Gf186
Oryginalny kod z DeluxeBloggingTips.com (DBT), na podstawie którego oparłem Metaboksy: http://loak.pastebin.com/u9YTQrxf
Wersja kodu DBT, którą zmodyfikowałem, aby udostępnić mi przyrostowe wersje tego samego metaboksu: http://loak.pastebin.com/WtxGdPrN
Zmodyfikowana wersja kodu DBT, którą Chris Burbridge utworzył, aby umożliwić wiele wystąpień TinyMCE: http://loak.pastebin.com/Mqb3pKhx Z tym kodem TinyMCE działają.
Moja modyfikacja kodu Burbridge, która próbuje włączyć moją inkrementację oraz pole, które pozwala wybrać obraz z rozwijanej listy wszystkich obrazów dołączonych do posta: http://loak.pastebin.com/xSuenJTK W tej próbie TinyMCE jest zepsuty i menu rozwijane nie działa.
Prawdopodobnie nie ma to znaczenia, ale na wypadek, gdybyś się zastanawiał, oto kod, którego używam, aby pobrać kod osadzania z niestandardowej meta postu, zmienić jego rozmiar i wstawić do posta: http://loak.pastebin.com / n7pAzEAw
To jest zredagowana wersja oryginalnego pytania odzwierciedlająca aktualny status projektu i odpowiadająca na pytania zamieszczone w komentarzach. Dzięki Chris_O za wystawienie nagrody za to. Dziękuję także Rarstowi i Justinowi za pomoc w tym zakresie na forum ThemeHybrid.com . Spędziłem nad tym wiele godzin i utknąłem (kilka godzin spędziłem sam na tym pytaniu). Każda pomoc byłaby bardzo mile widziana.