1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Template für Custom Post Types

Dieses Thema im Forum "Konfiguration" wurde erstellt von maariaa, 16. März 2017.

  1. maariaa

    maariaa Well-Known Member

    Registriert seit:
    11. Mai 2016
    Beiträge:
    53
    Zustimmungen:
    0
    Hallo an alle :)

    Ich habe eine Frage wegen den Templates für Custom Post Types. Laut der Wordpress Template Hierarchie werden ja die Beiträge der Custom Post Types in der archive-{slug}.php ausgegeben. Wenn die nicht existiert in der archive.php und ansonsten in der index.php.

    Mit den ersten beiden Lösungen war ich nicht glücklich, weil ich es nicht geschafft habe, die aktuelle Seite im Menü hervorzuheben und den Titel der Webseite auszugeben. Ich habe noch nicht ganz verstanden warum das so ist, ich nehme an das Archivseiten irgendwie anders funktionieren. Damit muss ich mich noch genauer befassen.

    Dieses Problem konnte ich aber lösen indem ich ein eigenes Template, also eine page-beispiel.php mit

    /**
    * Template Name: Personen
    */

    angelegt habe. In diesen Templates wird mit WP_Query der Posttype abgefragt, ich habe also für jeden Post Type ein eigenes Template mit einem eigenen Loop. Es ist bei mir so, das pro Seite eine Art von Custom Post Types geladen wird.

    Das funktioniert alles und doch habe ich das Gefühl, diese Sache nicht gut gelöst zu haben. Aus dem Grund das ich jetzt für jede Seite ein eigenes Template habe und Anpassungen immer für jede Seite einzeln machen muss. Meine Frage ist, ob es eine Möglichkeit gibt, beispielsweise in der page.php, oder in der index.php eine Abfrage einzubauen, von welcher Seite ich komme und je nachdem die richtigen Beiträge zu laden.

    Als Beispiel zur Veranschaulichung:

    Custom Post Type: people
    Seite: Personen
    Template: people.php
    WP_Query als Argument: 'post_type' => 'people'

    Custom Post Type: animals
    Seite: Tiere
    Template: animals.php
    WP_Query als Argument: 'post_type' => 'animals'


    Ich hoffe ich konnte das verständlich beschreiben und bin sehr froh, wenn mir jemand sagen kann, wie ich das besser lösen könnte.
     
  2. maariaa

    maariaa Well-Known Member

    Registriert seit:
    11. Mai 2016
    Beiträge:
    53
    Zustimmungen:
    0
    Hallo :)

    Ich komme bei dieser Sache einfach nicht weiter. Vielleicht konnte mir hier niemand helfen, weil ich das Problem nicht klar beschrieben habe, also versuche ich es jetzt nochmal.

    Gibt es eine Möglichkeit verschiedene CustomPostTypes in einem Template auszugeben und je nachdem von welcher Seite ich komme, die richtigen anzuzeigen. Würde ich das ohne Wordpress machen, dann würde ich es in etwa so versuchen:

    if($page === 'person') {
    // WP_Query Argument 'personen'
    } elsif ($page === 'tier') {
    // WP_Query Argument 'tiere'
    }

    Es tut mir wirklich leid, das ich damit jetzt noch einmal nerven muss, ich habe vieles versucht, aber ich glaube mir fehlt hier von Grund auf die Richtung in die ich denken muss, beziehungsweise ich bin nicht einmal mehr sicher, ob es dafür eine Lösung gibt.
     
  3. helix

    helix Well-Known Member

    Registriert seit:
    28. Juli 2011
    Beiträge:
    1.808
    Zustimmungen:
    27
  4. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.636
    Zustimmungen:
    1.778
    Würde empfehlen, zurück zur Verwendung von archive-{post_type}.php zu gehen und in der entspr. Datei im Theme einen Titel und ggf. für das Menü die fehlenden Styles in style.css zu ergänzen, das wäre die saubere Lösung.

    Möglicherweise wurde bzgl. des "hervorheben" Problems ja nur die Archivseite des Custom Post Types nicht korrekt ins Menü gezogen? Das wäre z.B. der Eintrag "Alle Tiere" beim Bearbeiten des Menüs links unter "Tiere" im Tab "Zeige alle". Rechts im Menü steht bei dem Eintrag dann ""Inhaltstyp-Archiv" statt "Seite".
     
    #4 b3317133, 23. März 2017
    Zuletzt bearbeitet: 23. März 2017
  5. maariaa

    maariaa Well-Known Member

    Registriert seit:
    11. Mai 2016
    Beiträge:
    53
    Zustimmungen:
    0
    Danke euch beiden für die Tipps.

    Die Conditional Tags gehen ziemlich genau in die Richtung, an die ich gedacht hatte. Allerdings mache ich das Theme nur zu Übungszwecken, darum bin ich sehr an den "best practices" interessiert und werde nochmal versuchen, ob ich mit der Lösung von b3317133 zurecht komme. Ich habe mich dabei eigentlich nur auf den Code konzentriert und nicht daran gedacht das es an einer falschen Einstellung liegen könnte.

    Dennoch muss ich nochmal nachfragen, ich muss auf diese Weise ja wieder eine Datei für jedes Template anlegen. Ist das ok dann? Mir liegt wirklich sehr viel daran, mein Theme ordentlich programmiert zu haben.

    Ich bin so stutzig, weil ich bisher nur PHP kenne und dabei ja das DRY-Prinzip immer beachtet werden muss. Oder muss ich den Gedanken "was in php gewünscht ist, gilt automatisch auch für Wordpress" einfach ablegen?

    Liebe Grüße
    Marie
     
  6. Herbertf2

    Herbertf2 Member

    Registriert seit:
    17. März 2017
    Beiträge:
    8
    Zustimmungen:
    0
    Hallo Marie,
    ich habe ein ähnliches Problem, ich kann mein Custom-Post-Type "tiere" nicht über die Kategorie-Seiten ausgeben lassen (arbeite dran), auf "normalen" Seiten funktioniert es aber.
    Zu Deinem Problem: Ich habe die Funktion
    $pagename = get_query_var('pagename');
    zur Ausgabe des Pagenamens gefunden, die Dir vielleicht weiterhilft. $pagename gibt Dir den Namen der Seite wieder, die Du im Menue angeklickt hast.
    Ich versuche gerade, die Variable als Kategoriefilter (Ich habe Ketegoreien und Seiten den gleichen Namen gegeben) für die Ausgabe zu verwenden, falls es mit den Kategorieseiten nicht klappt.
    Plugins: CustomPostTypes UI
    Theme: Bouquet

    Gruss

    Herbert
     
  7. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.636
    Zustimmungen:
    1.778
    @Herbert: Eröffne bitte einen neuen Thread mit Deinem Problem.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden