web-dev-qa-db-ja.com

分類別に分類されたカテゴリーの投稿を表示する

デフォルトの投稿を「Products」、デフォルトのカテゴリを「Application」、そしてカスタム分類法を「Groups」とするプロジェクトに取り組んでいます。

"Application"(category.php)で "Products"をリストしたいが、それらをそれぞれの "Groups"にグループ化したい。

  • 自動車 (用途)
    • (グループ)
      • 商品01
      • 商品04
      • 商品05
    • フレーク (グループ)
      • 商品02
      • 商品03
      • 商品06

私はさまざまな試みを試みましたが、成功しませんでした。

これに取り組む簡単な方法はありますか?ありがとうございます。

6
rafawhs

解決策を見つけました!

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