• Gelöst timonw

    (@timonw)


    Ich habe ein Custom Post Type (buch) und eine Taxonomy (person). Der Custom Post Type hat zwei verschiedene Custom Taxonomy Fields, beide mit der Taxonomy „person“. Ein Feld heißt „herausgegeben“ und ein Feld „beitraege“. Beide Felder haben die gleiche Taxonomy, weil die vom gleichen Personen-Pool bespielt werden sollen. In beiden Feldern können mehrere Taxonomy-Terms ausgewählt werden.

    In meiner WP-Query weiß ich nun nicht, wie ich damit umgehen soll. auf „seite.de/person/max-mustermann“ würde ich gerne alle Bücher anzeigen, die im „herausgeber“-Feld den Term „max-mustermann“ haben bzw. die ID von dem „personen“-Term „max-mustermann“. Das scheint nicht zu funktionieren, zumindest zeigt er mir dann alle Bücher an:

    $args = [
        'posts_per_page' => -1,
        'meta_query' => [],
        'post_type' => 'buch',
        'order' => 'DESC',
        'orderby'=> 'date',
        'tax_query' => array(
              array (
                  'taxonomy' => 'herausgegeben',
                  'field' => 'term_id',
                  'terms' => get_queried_object()->term_id,
              )
          ),
      ];

    Ich habs auch mit meta_quer probiert, hier werden jedoch nur die Bücher angezeigt, die AUSSCHLIEßLICH die entsprechende ID haben, nicht jene, die mehrere Herausgeber haben.

    'meta_query' => array( array(
            'key' => 'herausgegeben',
            'value' => get_queried_object()->term_id,
            'compare' => 'IN',
            'type' => 'term_id',
    ))
    • Dieses Thema wurde vor 1 Jahr von timonw geändert.
    • Dieses Thema wurde vor 1 Jahr von timonw geändert.
    • Dieses Thema wurde vor 1 Jahr von timonw geändert.
    • Dieses Thema wurde vor 1 Jahr von timonw geändert.
Ansicht von 4 Antworten – 1 bis 4 (von insgesamt 4)
  • Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    … hat zwei verschiedene Custom Taxonomy Fields, beide mit der Taxonomy „person“. Ein Feld heißt „herausgegeben“ und ein Feld „beitraege“.

    Um Missverständnisse zu vermeiden: Taxonomy bedeutet vereinfacht Sortierkriterien. Bei Büchern wäre ein Sortierkriterium zum Beispiel das Genre: Handelt es sich um Krimis, Science Fiction, Belletristik, Sachbücher …? Du hast dann ein Eingabefeld, in dem du das Sortierkriterim auswählst – nicht zwei, wie in deiner Beschreibung. Kann es sein, dass du Custom Fields meinst, benutzerdefinierte Felder in die man z.B. bei Büchern das Erscheinungsjahr eintragen kann, den Autor oder Verlag?

    Im Titel deiner Frage schreibst du auch „Custom Fields“, nur haben die dann nichts mit einem benutzerdefinierten Sortierkriterium (Custom Taxonomy) zu tun.

    Wenn du nach einem Sortierkriterium abfragen möchtest, also z.B. alle Krimis in deinem Custom Post Type Bücher, kommt eine so genannte Meta Query in Frage. Sinngemäß kannst du mit etwas wie

    $meta_query_args = array(
      array(
        'relation' => 'AND',
        array(
          'key'     => 'genre',
          'value'   => 'Krimi',
          'compare' => '='
        ),
        array(
          'key'     => 'einband',
          'value'   => 'Hardcover',
          'compare' => '='
        )
      )
    );
    $meta_query = new WP_Meta_Query( $meta_query_args );

    alle Bücher abrufen, die Krimis sind und einen festen Einband haben.

    Alternativ kannst du auch alle Bücher ausgeben, bei denen z.B das Custom Field „Autor“ mit „Sherlock Holmes“ gefüllt wurde:

    $posts = get_posts(array(
        'posts_per_page'    => -1,
        'post_type'     => 'post',
        'meta_key'      => 'author',
        'meta_value'    => 'Sherlock Holmes'
    ));

    Kannst du damit etwas anfangen?

    Noch kurz ein freundlicher Hinweis: Wir bieten hier vor allem Anwendungssupport. Bei Fragen zu Programmierung bist du auf WordPress Stackexchange meistens besser aufgehoben.

    Thread-Starter timonw

    (@timonw)

    Lieben Dank schonmal. Ich hoffe es ist OK, wenn ich nochmal antworte, obwohl ich hier etwas falsch bin.

    Das Durcheinander mit Custom Field und Taxonomy ist genau das Problem. Ich habe die Taxonomy „person“. Außerdem habe ich für den Posttype „buch“ zwei Custom fields vom Typ „Advanced taxonomy“ (Metabox Plugin). Beides Custom fields (1. „herausgegeben“ 2. „beitraege“) greifen auf die Taxonomy „person“ zu, weil beide aus dem gleichen Pool schöpfen sollen.

    Das heißt: Ich muss das Custom field „herausgegeben“ abfragen und hier schauen, welche Taxonomy-terms ausgewählt wurden. Mein Ansatz mit meta_query funktioniert so halb. Er zeigt dann alle Bücher an, bei denen NUR der entsprechende Taxonomy-Term ist, nicht aber jene, bei denen auch andere Taxonomy-Terms sind.

    Ich hoffe, das hat es etwas verständlicher gemacht?

    PS: Ich war davon ausgegangen, dass die Custom field-Sache Standard-Wordpress ist, aber müsste ich dann vielleicht eher im Forum von Meta Box fragen?

    • Diese Antwort wurde vor 1 Jahr von timonw geändert.
    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Custom Post Types (benutzerdefinierte Inhaltsarten),
    Custom Taxonomy (benutzerdefinierte Sortierkriterien) und
    Custom Fields (benutzerdefinierte Felder für Meta-Angaben)
    sind fester Bestandteil des WordPress Core seit Version 3.0.

    Bei Custom Fields besteht das Problem, dass ein Autor z.B. eine Farbe „rot“ eingibt, während ein anderer „Rot“ schreibt – schon hast du zwei verschiedene Werte. Mit dem Plugin Advanced Custom Fields kannst du vordefinierte Eingabefelder (so genannte Metaboxes) mit dem Anklicken von ein paar Kästchen erstellen und hast dann Pulldown-Menüs, Datumswähler, Farbwähler, Textboxen usw., die vor allem eine einheitliche Eingabe ermöglichen sollten.

    Custom Post Types und Custom Taxonomy sind eigentlich (anders als Custom Fields) nicht sonderlich kompliziert aufzusetzen, erfordern aber grundsätzlich die Erstellung eines eigenen Plugins. Hier ist das Plugin Custom Post Type UI eine bequeme Lösung, weil du (ähnlich wie bei Advanced Custom Fields) CPT/CT mit Anklicken von einigen Kontrollkästchen und Pulldown-Menüs erstellen kannst. Das Plugin bietet dann sogar die Möglichkeit, den erzeugten Code zu kopieren und in ein eigenes Plugin zu übernehmen (was dich künftig unabhängig von dem Plugin Custom Post Type UI macht).

    Für die Abfrage nach Meta-Feldern bzw. nach Taxonomy gibt es jeweils eigene Routinen – einmal wie gesagt, indem du dem Objekt WP_Query als Argument den Namen des Custom Fields und den gewünschten Begriff übergibst, zum anderen mit einer Meta-Query, die zu einer (oder mehreren) Taxonomie-Begriffen den gewünschten Wert abfragt.

    Schwieriger wird es, wenn du beides Kombinieren möchtest, also z.B. „Nenne mir alle Krimis (Taxonomy!), die einen Preis (Custom Field!) zwischen 9,99€ und 29,99€ haben.“ Hier wird vermutlich eine direkte Datenbankabfrage nötig.

    Der Hinweis auf WordPress Stackexchange sollte nicht bedeutet, dass wir uns hier fortan zu dieser Frage stumm stellen 😀 , sondern dass du da Programmierer findest, für die solche Fragen zum alltäglichen Geschäft gehören und dir dir besser oder schneller antworten können.

    Thread-Starter timonw

    (@timonw)

    Das Problem war, dass ich „taxonomy advanced“ bei Metabox genutzt habe, weil so die Taxonomy-Terms gar nicht dem Beitrag zugeordnet werden. Erklärung dazu in diesem Thread:

    https://wordpress.org/support/topic/wp-query-taxonomy-in-two-different-custom-fields/

Ansicht von 4 Antworten – 1 bis 4 (von insgesamt 4)
  • Das Thema „WP Query taxonomy in zwei verschiedenen custom fields“ ist für neue Antworten geschlossen.