最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

loop - Display category posts grouped by taxonomy

matteradmin6PV0评论

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
?>
Post a comment

comment list (0)

  1. No comments so far