admin管理员组

文章数量:1433514

I'm working on a project where I use the default posts as "Products", default category as "Application" and a custom taxonomy called "Groups".

I want to list "Products" by "Application" (category.php) but group them together into their respective "Groups":

  • Automotive (Application)
    • Silver (Group)
      • Product 01
      • Product 04
      • Product 05
    • Flake (Group)
      • Product 02
      • Product 03
      • Product 06

I’ve tried different attempts but with no successful result.

Is there an easy way to go about this? Thanks!

I'm working on a project where I use the default posts as "Products", default category as "Application" and a custom taxonomy called "Groups".

I want to list "Products" by "Application" (category.php) but group them together into their respective "Groups":

  • Automotive (Application)
    • Silver (Group)
      • Product 01
      • Product 04
      • Product 05
    • Flake (Group)
      • Product 02
      • Product 03
      • Product 06

I’ve tried different attempts but with no successful result.

Is there an easy way to go about this? Thanks!

Share Improve this question asked Jul 24, 2012 at 14:10 rafawhsrafawhs 3083 silver badges14 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 8

I've found a solution!

<?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
?>

本文标签: loopDisplay category posts grouped by taxonomy