Ich muss ein benutzerdefiniertes Post-Meta-Feld für meinen benutzerdefinierten Post-Typ "Diashow" erstellen (dieser Post-Typ ist bereits erstellt). Jede Metabox enthält den Inhalt jeder Folienfolie und speichert ihn in den entsprechenden benutzerdefinierten Feldern. Jede Metabox sollte folgende Felder enthalten:
- Titel (Textfeld)
- Bild (entweder ein Textfeld für die Bild-URL oder idealerweise eine Dropdown-Liste mit Miniaturansichten der an den Beitrag angehängten Bilder)
- Code einbetten (Textbereich)
- Beschreibung (wysiwyg)
- Folie ausblenden (Kontrollkästchen, um eine Folie vorübergehend auszublenden, ohne sie zu löschen)
- Folie löschen (Schaltfläche zum Löschen des Inhalts der Post-Meta-Felder, die von dieser Folie ausgefüllt wurden)
Ich hätte auch gerne irgendwo eine Schaltfläche, mit der ich eine Folie hinzufügen kann. Wenn ich darauf klicke, wird eine weitere benutzerdefinierte Metabox "Folie" hinzugefügt, die ein Duplikat der ersten ist, aber jedem benutzerdefinierten Post-Metafeld eine inkrementelle Nummer hinzufügt. Ich habe derzeit nur 15 Metaboxen und die Diashow-Vorlage ist so eingerichtet, dass nur 5 Folien angezeigt werden, wenn nur 5 der Metaboxen ausgefüllt sind.
Schließlich möchte ich die Folien nachbestellen können, entweder per "Drag and Drop" oder über ein anderes Textfeld, in das ich die Bestellnummer eingeben kann.
Ich habe es mit dem "More Fields" -Plugin und ein paar Code-Hilfen von Rarst fast dort bekommen, wo ich es brauche. Mit dem Plugin "Weitere Felder" habe ich in jeder Metabox folgende Felder:
- Titel (Textfeld)
- Bild (Eine Dropdown-Liste der an den Beitrag angehängten Bilder)
- Code einbetten (Textbereich)
- Beschreibung (wysiwyg)
- Folie ausblenden (Kontrollkästchen, um eine Folie vorübergehend auszublenden, ohne sie zu löschen)
Hier ist ein Screenshot davon, wie ich es über das Plugin "More Fields" eingerichtet habe:
Das Problem dabei ist, dass eine erstellte Folie nicht gelöscht werden kann, da "Weitere Felder" <?php delete_post_meta($post_id, $key, $value); ?>
nirgendwo verwendet wird. Das andere Problem mit dem Plugin ist, dass es zu unzuverlässig ist und häufig mit Updates bricht.
Ich konnte eine ähnliche Lösung mit meinen eigenen benutzerdefinierten Metaboxen implementieren, die Folgendes umfassen:
- Titel (Textfeld)
- Bild (Textfeld für die img URL)
- Code einbetten (Textbereich)
- Beschreibung (Textbereich)
- Folie ausblenden (Kontrollkästchen, um eine Folie vorübergehend auszublenden, ohne sie zu löschen)
Mit dieser Implementierung kann ich nicht scheinen, die mehrfachen TinyMCE-Felder zum Arbeiten oder das Bild-Dropdown-Feld zu erhalten. Der TinyMCE Code scheint zu funktionieren , bis ich den Code hinzufügen , die inkrementellen Kopien des ersten metabox schaffen , an welchem Punkt ich diesen Fehler direkt über dem Feld, wo die TinyMCE Tasten sein sollen: Warning: array_push() [function.array-push]: First argument should be an array...
.
Außerdem verlasse ich mich im Moment darauf, dass meine Autoren wissen, ob sie für jede Folie ein Video oder ein Bild einfügen können, und das ist in Ordnung, aber es ist möglicherweise besser, ein Optionsfeld zu haben, mit dem sie auswählen können, welche Folie die Folie ist (wahrscheinlich standardmäßig) Bild), das an eine bedingte Anzeigeanweisung in der Diashow-Vorlage gebunden ist.
Ich verwalte das Hochladen von Bildern über das integrierte Feld "Ausgewähltes Bild" in der Seitenleiste, obwohl mir eine benutzerdefinierte Metabox nichts ausmacht, in der oben im Schreibfeld einfach "Bilder hochladen" steht.
Letztendlich suche ich eine Diashow wie diese: http://www.nytimes.com/slideshow/2010/08/10/science/20100810angier-1.html . Ich möchte, dass ich anstelle eines Bildes auch ein Video als Inhalt in der Folie haben kann. Ich benötige ein intuitives und einfach zu bedienendes Admin-Panel für meine Autoren (sie sind nicht sehr technisch versiert und arbeiten nicht zuverlässig mit HTML und / oder Shortcodes). Für den Fall, dass es aus dem Beispiel nicht klar wird, sollte jede Folie einen neuen Seitenaufruf generieren.
Die Drag'n'Drop-Neuordnung hat keine hohe Priorität, aber es wäre cool. Ich habe ein Plugin gefunden, das das wirklich gut macht: SlideDeck . Leider entspricht das Plugin nicht meinen Wünschen, aber die Art und Weise, wie die Folien bestellt werden, ist ziemlich raffiniert. Es ist eine separate Metabox in der Seitenleiste, mit der Sie die Folien in die von Ihnen gewünschte Reihenfolge ziehen können. Auf diese Weise können Sie auch Folien hinzufügen, indem Sie auf die Schaltfläche "Folie hinzufügen" klicken und dem Schreibfeld eine weitere Folien-Metabox hinzufügen. Hier ist ein Screenshot:
Sie können auch weitere Screenshots davon im WordPress-Repository in Aktion sehen .
Hier ist mein gesamter Code:
Die Funktionen zum Einrichten meines Diashow-Beitragstyps und der Diashow-Paginierung: http://loak.pastebin.com/g63Gf186
Der ursprüngliche Code von DeluxeBloggingTips.com (DBT), auf dem meine Metaboxen basieren: http://loak.pastebin.com/u9YTQrxf
Die Version des DBT-Codes, den ich geändert habe, um inkrementelle Versionen derselben Metabox zu erhalten: http://loak.pastebin.com/WtxGdPrN
Eine modifizierte Version des DBT-Codes, den Chris Burbridge erstellt hat, um mehrere Instanzen von TinyMCE zu ermöglichen: http://loak.pastebin.com/Mqb3pKhx Mit diesem Code funktionieren die TinyMCEs.
Meine Änderung von Burbridges Code, der versucht, meine Inkrementierung zu integrieren, und ein Feld, in dem Sie das Bild aus einer Dropdown-Liste aller an den Beitrag angehängten Bilder auswählen können: http://loak.pastebin.com/xSuenJTK Bei diesem Versuch wird der TinyMCE ist kaputt und das Dropdown funktioniert nicht.
Dies spielt wahrscheinlich keine Rolle, aber für den Fall, dass Sie sich fragen, hier ist der Code, den ich verwende, um den Einbettungscode aus dem benutzerdefinierten Post-Meta zu ziehen, seine Größe zu ändern und ihn in den Beitrag einzufügen: http://loak.pastebin.com / n7pAzEAw
Dies ist eine bearbeitete Version der ursprünglichen Frage, die den aktuellen Status des Projekts widerspiegelt und die in den Kommentaren gestellten Fragen beantwortet. Vielen Dank an Chris_O , der das Kopfgeld dafür gezahlt hat . Vielen Dank auch an Rarst und Justin, die mir im ThemeHybrid.com-Forum dabei geholfen haben . Ich habe Stunden und Stunden damit verbracht und stecke fest (ich habe ein paar Stunden alleine mit dieser Frage verbracht). Jede Hilfe wäre sehr dankbar.