it-swarm.com.de

Kategorie anzeigen Beiträge nach Taxonomie gruppiert

Ich arbeite an einem Projekt, in dem ich die Standardbeiträge als "Produkte", die Standardkategorie als "Anwendung" und eine benutzerdefinierte Taxonomie namens "Gruppen" verwende.

Ich möchte "Produkte" nach "Anwendung" (category.php) auflisten, sie jedoch in ihren jeweiligen "Gruppen" zusammenfassen:

  • Automotive (Bewerbung)
    • Silber (Gruppe)
      • Produkt 01
      • Produkt 04
      • Produkt 05
    • Flocke (Gruppe)
      • Produkt 02
      • Produkt 03
      • Produkt 06

Ich habe verschiedene Versuche unternommen, aber kein erfolgreiches Ergebnis erzielt.

Gibt es einen einfachen Weg, dies zu tun? Vielen Dank!

6
rafawhs

Ich habe eine Lösung gefunden!

<?php
    // Get current Category
    $get_current_cat = get_term_by('name', single_cat_title('',false), 'category');
    $current_cat = $get_current_cat->term_id;


    // List posts by the terms for a custom taxonomy of any post type
    $post_type = 'myposttype';
    $tax = 'mytaxonomy';
    $tax_terms = get_terms( $tax, 'orderby=name&order=ASC');
    if ($tax_terms) {
        foreach ($tax_terms  as $tax_term) {
            $args = array(
                'post_type'         => $post_type,
                "$tax"              => $tax_term->slug,
                'post_status'       => 'publish',
                'posts_per_page'    => -1,
                'category__in'      => $current_cat // Only posts in current category (category.php)
            );

            $my_query = null;
            $my_query = new WP_Query($args);

            if( $my_query->have_posts() ) : ?>

                <h2><?php echo $tax_term->name; // Group name (taxonomy) ?></h2>

                <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
                    <?php $term_list = wp_get_post_terms($post->ID, 'category', array("fields" => "ids")); // Get post categories IDs?>

                    <?php if (in_array($current_cat, $term_list) ): // Display only posts that have current category ID ?>
                        <h3><?php the_title(); ?></h3>
                    <?php endif; // if in_array ?>

                <?php endwhile; // end of loop ?>

            <?php endif; // if have_posts()
            wp_reset_query();

        } // end foreach #tax_terms
    } // end if tax_terms
?>
7
rafawhs