Support » Allgemeine Fragen » Anzeige von Feldern, je nach Checkbox auswahl

  • Ich probiere gerade folgendes aus:

    Ich habe ein paar „Objekte“,in dem Fall mal Städte (vereinfacht). Zu jeder Stadt gehört entsprechend ein Land (auch wenn ich noch nicht sicher weiß, wie man das am besten implementiert), ich habe also zum Beispiel folgende „Einträge“:

    Stuttgart - Deutschland
    Berlin - Deutschland
    Dresden - Deutschland
    Paris - Frankreich
    Marseille - Frankreich
    Lyon - Frankreich
    New York - USA
    Chicago - USA
    LA - USA
    Miami - USA
    Peking - China
    Shanghai - China
    Hongkong - China

    Ich denke man weiß, was ich meine.

    Außerdem habe ich einige Checkboxen. Jeder Checkbox ist ein Land zugeordnet, wenn man also die Liste oben nimmt, hätte ich entsprechend 4 Checkboxen, eine für Deutschland, eine für Frankreich, eine für USA und eine für China.

    Mein Ziel ist nun, dass beim Auswählen einer Checkbox die dazugehörigen Städte die gespeichert sind angezeigt werden. Wenn zwei Länder ausgewählt werden, sollen auch die Städte von beiden Ländern angezeigt werden, usw.

    Ich habe aber keine Ahnung, wie ich anfangen soll. Normalerweise (also in einer normalen Web App) würde ich einfach eine Tabelle erstellen mit ID, Stadt und Land und in meinem Frontend auf die Checkbox.change reagieren, dann das mit AJAX an eine PHP Datei schicken, die das dann aus der Datenbank ausliest (also z.B. select * from tbl_cities where country=germany) und das Ergebnis dann ausgeben.

    Geht sowas Ähnliches auch in WordPress direkt? Oder wie fange ich das an?

    Nochmal, um sicherzugehen, es muss dann einfach nur HTML ausgegeben werden, wenn eine Checkbox angehakt wurde, also wenn man zum Beispiel Deutschland auswählt, müsste in HTML eine <ul> erscheinen mit foreach($cities as $c){ echo "<li>".$c."</li>";}, aber das Problem ist das drum rum.. Wie reagiere ich auf die Checkbox-Änderungen, wie bekomme ich anschließend die zugehörigen Städte und wo speichere ich diese „Relationen“ bzw. die Städte und Länder selbst?

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Bei einer frischen WordPress-Installation ohne zusätzliche Plugins hast du die Möglichkeit, Inhalte in Form von statischen Seiten oder als Beiträge einzugeben.
    Beiträgen können Kategorien und Schlagwörter zugewiesen werden und WordPress erstellt automatisch dynamische Seiten, auf denen Beiträge nach unterschiedlichen Kriterien chronologisch oder nach Kategorie oder Schlagwort ausgegeben werden.

    Für dein Projekt wären statische Seiten eher ungeeignet, da sie keine Gruppierung z.B. nach Kategorien erlauben und nicht zu dynamischen Seiten zusammengefügt werden können. (Dass mehrere Seiten trotzdem auf einer einzigen Webseite dargestellt werden, siehst du allerdings sehr schön an den Einstellungsmöglichkeiten des aktuellen Standard-Theme Twenty Seventeen. Nur liefert hier das Theme eine zusätzliche Programmierung, die die Zusammenfassung erst ermöglicht.) Beiträge würden also zur Darstellung der Städte besser passen, aber hier würdest du vermutlich schnell mit normalen Blogbeiträgen durcheinanderkommen. Meine Erfahrung ist, dass AnwenderInnen auch gerne vergessen, eine passende Kategorie zuzuweisen und sich dann wundern, dass z.B. die Stadt an anderer Stelle dargestellt wird als gewünscht.

    Die Lösung heißt bei WordPress „Custom Post Type“, also eine eigene Inhaltsart, die du nach Belieben definieren kannst und die dann im WordPress-Backend ein eigenes Menü zur Erfassung und Bearbeitung erhält – Verwechselungen sind so schon mal ausgeschlossen. Zusätzlich zu Custom Post Types kannst du sogar noch eigene Sortierkriterien definieren – bei Musik, Filmen oder Büchern z.B. „Genres“, bei Städten „Länder“, usw.

    Die Definition eines (oder mehrerer) Custom Post Types und Custom Taxonomy sollte nie Bestandteil eines Themes sein, weil sonst bei einem späteren Theme-Wechsel die Inhalt unzugänglich werden (sie sind zwar noch in der Datenbank gespeichert, aber das Menü wird nicht mehr angezeigt und die automatisch erzeugten Zusammenstellungen nicht mehr generiert). Deshalb solltest du selber ein kleines Plugin schreiben (was sich meistens viel komplizierter anhört, als es eigentlich ist), mit dem du den Custom Post Type erstellst. Dabei kannst du auch auf den Post Type Generator zurückgreifen, der dir bereits den fertigen Code für dein Plugin liefert.
    Alternativ kannst du natürlich auch einfach ein Plugin nutzen, z.B. das „Custom Post Type User Interface“, Custom Post Type UI, das dich auch bei der Erstellung einer Custom Taxonomy („Länder“) unterstützt.

    Etwas komplizierter wird es bei dem gewünschten Filter.

    Eine einfache Lösung wäre, ein eigenes Template zu schreiben, dass zunächst alle Städte ausgibt und ein ein HTML-Element packt, dessen CSS-Klasse dem Land entspricht. Um dann nur Städte eines Landes anzuzeigen, benötigst du eine Javascript-Funktion, die den Wert eines Pulldown-Menüs oder eines Radio-Button ausliest nur Element mit dieser CSS-Klasse einblendet. Das geht auch mit hübschen Animationseffekten, wie z.B. im jQuery-Plugin Quicksand. Der Nachteil dieser Lösung ist aber, dass zunächst alle Beiträge des Custom Post Type geladen werden müssten um sie dann im nächsten Schritt auszublenden, was die Performance der Webseite ganz erheblich beeinträchtigen könnte.

    In mehrfacher Hinsicht komfortabler ist da das Plugin Beaautiful Taxonomy Filters, mit dem du Beiträge eines Custom Post Type mit einer Custom Taxonomy filtern kannst. Das Formular zum Filtern der Inhalte kannst du entweder bequem als Widget oder (etwas komplizierter) über eine eigene Funktion in einem Template hinzufügen. Das Plugin liefert zusätzlich viele Filter für ganz individuelle Anpassungen.

    Thread-Starter namelessflorian

    (@namelessflorian)

    Erstmal Danke für die ausführliche Antwort!

    Ich habe jetzt zum Testen erstmal 3 Inhaltstypen erstellt: Köln, Berlin und Stuttgart, zusätzlich eine Taxonomie Deutschland und Deutschland mit den 3 Inhaltstypen verbunden. Soweit richtig oder?

    Jetzt habe ich in meinem WordPress Menü aber links unter Kommentare für jeden Inhaltstyp (also eins für Köln, eins für Berlin und eins für Stuttgart) ein Menüpunkt, wo ich „ein Stuttgart“ erstellen kann. Muss ich das machen oder wozu brauch ich das sonst?

    Und wie es jetzt weiter geht habe ich nicht ganz verstanden. Das „Beautiful Taxonomy Filters“-Plugin habe ich jetzt zwar installiert, verstehe aber nicht ganz, wie ich etwas einfügen kann. Wie könnte ich es da machen oder wie könnte ich sonst ein eigenes Template erstellen? Wo erstelle ich das Template und wie binde ich es dann ein auf meiner Seite?

    Ich weiß letztendlich nicht, welche Inhalte du wie darstellen möchtest, würde aber aufgrund der bisherigen Beschreibung davon ausgehen, dass der Custom Post Type (die Art des Inhalts) „Städte“ sein müsste, die Custom Taxonomy (das Sortierkriterium) „Länder“.

    Das Plugin zum Filtern nach Taxonomie kannst du als Widget einfügen (Design > Widgets …) oder du richtest dich nach den Angaben auf der Webseite des Plugins.

    Eine komplette Anleitung, wie du ein Child Theme anlegst, zusätzliche Templates erstellst und Funktionen des Plugins einbindest, sprengt hier den Rahmen (oder anders ausgedrückt: ich habe nicht die Zeit, für eine noch ausführlichere Beschreibung, die alle notwendigen Schritte erläutert). Da musst du dich selber ein wenig durchwurschteln – oder einen Dienstleister beauftragen, der das nach deinen Vorgaben umsetzt.

    Es wird häufig behauptet, WordPress sei einfach. Für die Veröffentlichung von Beiträgen oder Seiten in einer bereits installierten WordPress-Installation mag das stimmen. Die Erstellung eines Features wie du es beschreibst, ist nicht so trivial und eine fertige Lösung „Out of the Box“, bei der du lediglich ein Plugin instalierst, kenne ich nicht. Vielleicht hilft dir aber auch schon ein Plugins für „filterable Portfolios“ weiter? Das geht zumindest ansatzweise in die Richtung.

    Thread-Starter namelessflorian

    (@namelessflorian)

    Das letzte Plugin ist super, das erfüllt schon fast das, was ich brauche! Danke dafür! Da noch ein paar Änderungen dran, dann passt das. Kann mir das aber auf jeden Fall auch so anschauen und hab dann Codeteile, und weiß, wie so etwas aufgebaut ist.

    Also vielen lieben Dank für die Hilfe!

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Das Thema „Anzeige von Feldern, je nach Checkbox auswahl“ ist für neue Antworten geschlossen.