Fragen Sie mehrere Taxonomien ab und zeigen Sie die Anzahl der Beiträge an
1 Antworten
- Stimmen
-
- 2011-07-25
Ichbin sicher,dasseine benutzerdefinierte SQL-Abfrage vielbesserfunktionieren würde,aber hieristeine Optionmit den verfügbaren WordPress-Tools
//first get all categories $categories = get_terms( 'category', array( 'orderby' => 'count', )); //then create an array for easier processing foreach ( $categories as $cat ) { $slugs[] = $cat->slug; $counts[$cat->slug]['count'] = $cat->count; } //then loop over the categories and for each one create a "query" to count the number of available products foreach($slugs as $term){ $products = get_posts(array( 'post_type' => 'product', 'posts_per_page' => -1, 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => array( $term) ), array( 'taxonomy' => 'product_status', 'field' => 'slug', 'terms' => array( "available"), 'operator' => 'NOT IN', ) ) )); $counts[$term]['available'] = count($products); } //then all the is left is to print everyting Out if (count($counts) > 0){ echo '<table><tr><td>Category</td><td>No. of products</td><td>Products available</td></tr>'; foreach ($counts as $key => $val){ echo '<tr><td>'.$key.'</td><td>'.$var['count'].'</td><td>'.$var['available'].'</td></tr>'; } echo '</table>'; }
I'm sure that a custom sql query would work much better but here is an option using the WordPress Tools available
//first get all categories $categories = get_terms( 'category', array( 'orderby' => 'count', )); //then create an array for easier processing foreach ( $categories as $cat ) { $slugs[] = $cat->slug; $counts[$cat->slug]['count'] = $cat->count; } //then loop over the categories and for each one create a "query" to count the number of available products foreach($slugs as $term){ $products = get_posts(array( 'post_type' => 'product', 'posts_per_page' => -1, 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => array( $term) ), array( 'taxonomy' => 'product_status', 'field' => 'slug', 'terms' => array( "available"), 'operator' => 'NOT IN', ) ) )); $counts[$term]['available'] = count($products); } //then all the is left is to print everyting Out if (count($counts) > 0){ echo '<table><tr><td>Category</td><td>No. of products</td><td>Products available</td></tr>'; foreach ($counts as $key => $val){ echo '<tr><td>'.$key.'</td><td>'.$var['count'].'</td><td>'.$var['available'].'</td></tr>'; } echo '</table>'; }
-
Danke ...tax_queryin wp 3.xxist super ... und wie Sie sagten,würdeeine benutzerdefinierte Abfragebesserfunktionieren. Ich habe wp_querygedruckt und als Abfrage als Auswahlanzahl verwendet (wp_posts.id) ....Thanks... tax_query in wp 3.xx is awsome.. well as you said custom query would work better, i printed wp_query and used as query as select count(wp_posts.id)....
- 0
- 2011-07-25
- Rajeev Vyas
Ich habeeinen benutzerdefinierten Beitragstyp 'Produkt'. und 2benutzerdefinierte Taxonomien "Kategorie" und "Produktstatus".
Ich versuche,Kategorienin der Seitenvorlage aufzulisten und anzuzeigen,wie viele Produkteinsgesamtin der Kategorieenthalten sind und wie viele davon den Status "verfügbar" haben.
Soetwas
Kategorie|Anzahl der Produkte|Produkte verfügbar
Kannjemand zeigen,wieman Beiträgeerhält,dieeinerbestimmten Kategorie angehören undeinen bestimmten Statuswert auseiner anderen Taxonomie haben ...