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

Variable in query_post einsetzen

Dieses Thema im Forum "Konfiguration" wurde erstellt von Herbertf2, 20. März 2017.

  1. Herbertf2

    Herbertf2 Member

    Registriert seit:
    17. März 2017
    Beiträge:
    8
    Zustimmungen:
    0
    Hallo

    Ich habe folgendes Problem:
    Ich möchte in meiner archive.php einen Filter für Custom Post Types („tiere“) setzen, mit dem ich die posts-types „tiere“ nach Kategorien filtere. Klappt soweit auch:

    query_posts('post_type=tiere&post_status=publish&category_name=tiere-in-deutschland');

    Nun habe ich aber ca. 50 Kategorien, und ich möchte nicht unbedingt 50 archives erstellen, die sich nur im Filter unterscheiden. Da ich die Menü-Pages und die Kategorien gleich benenne, möchte ich anhand des Seitennamens den Filtereintrag für die Kategorie setzen (z.B. Bei Aufruf der Seite „tiere-in-deutschland“ soll im Filter der categorie_name=tiere-in-deutschland auftauchen, z.B :

    $pagename = get_query_var('pagename');
    query_posts('post_type=tiere&post_status=publish&category_name=$pagename‘);

    Dies funktioniert aber nicht, auch wenn ich anstelle von =$pagename, =echo $pagename oder
    =get_query_var('pagename') einsetze.

    Da ich mich erst seit ca. 3 Wochen mit WP, HTML, CSS und PHP beschäftige, vermute ich, dass ich hier einfach einen Syntax-Fehler habe (die Variable (echo) $pagename gibt tatsächlich tiere-in-deutschland zurück) .

    Mein Thema hat keine category.php, vielleicht wäre alles einfacher, wenn ich eine category.php erstellen würde und hier den post_type „tiere“ integriere.

    Theme: twentysixteen
    Plugin: Custom Post Types
    WP-Version 4.7.3

    Herbert
     
  2. SirEctor

    SirEctor Well-Known Member
    Ehrenmitglied

    Registriert seit:
    28. Oktober 2008
    Beiträge:
    12.361
    Zustimmungen:
    427
    Du benennst Seiten genau so wie Kategorien? Damit hat WordPress ein Problem, gleiche Slugs werden falsch interpretiert. Ich denke schon alleine, dass hier kaum ein brauchbares Ergebnis bei rum kommt.
     
  3. helix

    helix Well-Known Member

    Registriert seit:
    28. Juli 2011
    Beiträge:
    1.808
    Zustimmungen:
    27
    @Herbertf2, vielleicht denkst du viel zu kompliziert.

    Wenn du eine Kategorie „Tiere in Deutschland“ hast (Slug tiere-in-deutschland), wird unter deine-domain.tld/tiere-in-deutschland/ eine Kategorieübersichtsseite aufgerufen, in der deine Beiträge der Kategorie „Tiere in Deutschland“ gelistet sind.

    Könnte es sein, dass das das Verhalten ist, das du mit deinem komplizierten Gebastel erreichen willst?
    => Wenn ja: dann mach es einfach so.
    => Wenn nein: Was passt nicht?

    Gruß
    helix
     
  4. Herbertf2

    Herbertf2 Member

    Registriert seit:
    17. März 2017
    Beiträge:
    8
    Zustimmungen:
    0
    Hallo SirEctor, Hallo Helix,

    erst einmal vielen Dank für die Antworten.

    Das Problem mit dem Anzeigen der Kategorien liegt darin, dass ich einen Custom-Post-Type ("tiere") verwende. Normale "posts" werden auch auf den entsprechenden Kategorieseiten angezeigt, aber eben keine post_types "tiere".
    Wenn ich nun entsprechende Archive anlege und dort den Post-Type "tiere" abfrage, kann ich im archive.php auch nach Kategorien filtern und das ganze über die content.php auf einer Seite anzeigen lassen. Das funktioniert schon mal.

    Klar, es wäre viel einfacher, wenn ich in auf den Kategorieseiten den post_type "tiere" direkt anzeigen lassen könnte (geht das über category.php ???), aber so weit bin ich noch nicht. Auf den Kategorieseiten werden nur die post_types "post" der "normalen" Beiträge angezeigt, nicht die CPT-posts. Ich bin bereits froh, dass ich den Inhalt gefiltert nach Kategorien auf unterschiedlichen Seiten anzeigen lassen kann.

    Zudem kommt noch ein weiteres Problem dazu: Gestern musste ich das Thema auf Anweisung einer einzelnen Dame wechseln. Das jetzige Thema unterstützt aber keine Excerpte (die ich bereits mit CSS und HTML im alten Thema schön hingebastelt hatte), das muss ich jetzt im neuen Thema auch erst einmal hinkriegen.

    PS: ich habe gestern noch etwas php gebüffelt und werde es mal mit "$pagename" versuchen.

    Trotzdem vielen Dank

    Herbert
     
  5. helix

    helix Well-Known Member

    Registriert seit:
    28. Juli 2011
    Beiträge:
    1.808
    Zustimmungen:
    27
    Auch Custom Post-Types können die gewöhnlichen Kategorien verwenden, die auch die Post-Types Post verwenden.
    Siehe: https://codex.wordpress.org/Function_Reference/register_post_type#taxonomies

    Schau dir mal die Funktionalität des More-Tags an.
    Was der Codex zum Thema Exzerpt meint, ist durchaus auch erhellend. https://codex.wordpress.org/Excerpt

    Ich will niemandem zu nahe treten. Aber erst mal WordPress büffeln – i.e. dich mit den bereits vorhandenen Strukturen vertraut machen – wäre meiner Ansicht nach zielführender.
    Es gibt in WordPress wirklich für sehr viele Fragen, die bei der Theme-Umsetzung so aufkommen können, schon fertige Funktionen. Größtenteils sind sie gut dokumentiert.

    Und sorge dafür, dass du unterschiedliche Slugs für Posts (welchen Post-Types auch immer) und Terms hast. SirEctor hat dich da nicht ohne Grund drauf hingewiesen.

    Gruß
    helix
     
  6. Herbertf2

    Herbertf2 Member

    Registriert seit:
    17. März 2017
    Beiträge:
    8
    Zustimmungen:
    0
    Hallo Helix,

    Danke für die Hinweise.

    Zu1: warum werden dann meine Post-Type-Typen nicht in den Kategorien angezeigt ???? (Vielleicht, weil mein Theme keine category.php hatte ? Mit category.php funktioniert es immer noch nur mit "Post"-Beiträgen, auch wenn ich den post-type um "tiere" erweitere. Aber das werde ich am Wochenende etwas näher untersuchen)

    Zu2: Problem mit den Excerpten ist gelöst.

    Zu3: Neben php, html und css "büffele" ich u.a. auch Wordpress (siehe 1, Template Hierarchie). Ich denke, dass ich als Autodidakt nach 4 Wochen doch schon ganz gut vorangekommen bin. Was mir fehlt, wäre ein Debugger für Wordpress. So bleibt mir nur try and error und entsprechende Kommentarzeilen in den Templates, um zu sehen, was schief läuft.

    Gruss

    Herbert
     
  7. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.660
    Zustimmungen:
    1.783
    Welches Plugin genau verwendest Du? Falls es "Custom Post Types UI" ist, schau mal, ob Du bei Deinem Post Type einen Haken bei "Kategorien (WP Core)" hast, ganz unten auf der Seite, die im ersten Screenshot. Das ist auch das was @Helix im ersten Absatz seiner Antwort meint.
     
  8. Herbertf2

    Herbertf2 Member

    Registriert seit:
    17. März 2017
    Beiträge:
    8
    Zustimmungen:
    0
    Hallo b3317133,

    Den Haken habe ich gesetzt (siehe Listing unten). Ich habe das Theme (nach Ratschlag von Sir Ector) auch neu aufgesetzt und Kategorien und Seiten unterschiedlich benannt.
    Es bleibt dabei:
    die Standard-Beiträge werden als Kategorieseite angezeigt, die Tier-Beiträge werden nicht auf Kategorieseiten angezeigt. Anscheinend bleibt mir tatsächlich nur der Umweg über die Seitendarstellung mittels archive-Templates.

    $args = array(
    "label" => __( 'Tiere', '' ),
    "labels" => $labels,
    "description" => "",
    "public" => true,
    "publicly_queryable" => true,
    "show_ui" => true,
    "show_in_rest" => false,
    "rest_base" => "",
    "has_archive" => false,
    "show_in_menu" => true,
    "exclude_from_search" => false,
    "capability_type" => "post",
    "map_meta_cap" => true,
    "hierarchical" => false,
    "rewrite" => array( "slug" => "tiere", "with_front" => true ),
    "query_var" => true,
    "menu_position" => 5,
    "supports" => array( "title", "editor", "thumbnail", "excerpt", "trackbacks", "custom-fields", "page-attributes", "post-formats" ),
    "taxonomies" => array( "category", "post_tag" ),
    );

    Danke

    Herbert
     
  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