Zeigen Sie Post nach Taxonomie und Taxonomie-Kind an, sofern vorhanden

Ich habe eine registrierte Taxonomie namens Typen, die hierarchisch ist und funktioniert. Ein Beispiel für Kategorien wird sein Hotel in Großbritannien – 1 Sterne – 2 Sterne – 3 Sterne Hotel in Spanien – 1 Sterne – 2 Sterne – 3 Sterne usw.

Ich habe Probleme, den richtigen Weg zur Anzeige meiner Seiten zu finden (benutzerdefiniertes Post-Hotel).

Ich brauche den Code, um Hotels nur nach Taxonomie anzuzeigen, wenn sie existieren

irgendeine Hilfe?

Code aktualisieren

$taxonomy2 = 'accomodation-type'; $termsacc = get_terms("accomodation-type",array('orderby' => 'slug', 'order' => 'ASC')); foreach ($termsacc as $termaccomodation) { //Here I loop through my tax acc-type //and check if there is any post by the country $termcountry->name (getting this value higher) $query = new WP_Query(array('post_type' => 'accomodation', 'orderby'=> $termaccomodation->name,'order' => 'DESC','accomodation-type' =>$termaccomodation->name, 'country' =>$termcountry->name,'posts_per_page' => 48 )); 

und Schleife ….

Solutions Collecting From Web of "Zeigen Sie Post nach Taxonomie und Taxonomie-Kind an, sofern vorhanden"

Ich würde in diesem Fall zwei benutzerdefinierte Taxonomien verwenden:

  • Hotel-Land
  • Sterne

beide nicht-hierarchische dann Ihre Anfrage wäre so einfach wie zum Beispiel Hotel in Großbritannien mit 2 Sternen:

 $args = array( 'post_type' => 'hotel', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'hotel-country', 'field' => 'slug', 'terms' => array( 'uk' ), ), array( 'taxonomy' => 'stars', 'field' => 'slug', 'terms' => array( '3-stars' ), ) ) ); $query_posts( $args ); 

Aktualisieren:

Unter Verwendung Ihres bestehenden Setups können Sie wieder 'tax_query' aber Sie müssen jetzt die Kind-Taxonomie-ID 'tax_query' , sagen Sie:

 UK 3-stars - term_id = 32 

dann sollten Ihre Abfrage und Argumente sein:

 $args = array( 'post_type' => 'hotel', 'tax_query' => array( array( 'taxonomy' => 'Types', 'field' => 'id', 'terms' => array( '32' ), 'operator' => 'IN', ) ) ); $query_posts( $args ); 

Update 2:

Wenn Sie bereits auf der UK-Seite sind, ändern Sie den Code wie folgt:

 $taxonomy2 = 'accomodation-type'; //the current page term id, (UK,JAPAN...) $current_term_id = get_query_var('term_id'); //array of child terms IDs. $termchildren = get_term_children($current_term_id,$taxonomy2); $args = array( 'post_type' => 'accomodation', 'tax_query' => array( array( 'taxonomy' => 'accomodation-type', 'field' => 'id', 'terms' => $termchildren, 'operator' => 'IN', ) ) ); $query( $args ); //loop 

Dies wird alle Posten von Unterkünften erhalten, die eine Unterbringungsart für Kinder in Großbritannien haben.