【问题标题】:Woocommerce Related Product by taxonomy按分类分类的 Woocommerce 相关产品
【发布时间】:2018-12-06 07:34:08
【问题描述】:

我需要按分类更改相关产品,如果分类没有足够的产品,则显示其他分类的其余产品。

我有 2 个分类; product_tagproduct_cat。有时 product_tag 中的产品不超过 4 个,因此我需要使用另一个分类来满足相关产品中的 4 个产品。

所以我需要 4 个相关产品,如果 product_tag 全部有那么什么都没有,如果没有使用 product_cat 来完成 4 个产品。

任何帮助都会很棒。

<?php
        // get the custom post type's taxonomy terms
        $related_category = wp_get_object_terms( $post->ID, 'product_cat', array('fields' => 'ids') );
        $related_tag = wp_get_object_terms( $post->ID, 'product_tag', array('fields' => 'ids') );
        // arguments
        $args = array(
        'post_type' => 'product',
        'post_status' => 'publish',
        'posts_per_page' => 4, // you may edit this number
        'orderby' => 'rand',
        'tax_query' => array(
            array(
                'taxonomy' => 'product_tag',
                'field' => 'id',
                'terms' => $related_tag
            )
        ),
        'post__not_in' => array ($post->ID),
        );
        $related_items = new WP_Query( $args );
        // loop over query
        if ($related_items->have_posts()) :
        while ( $related_items->have_posts() ) : $related_items->the_post();
        ?>
        <div class="related_item">
          <div class="Related_image">
            <a href="<?php the_permalink() ?>"><?php the_post_thumbnail('thumbnail'); ?></a>
          </div>
            <div class="Related_title">
              <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><h2>

            </div>
          </div>
        <?php
        endwhile;
        endif;
        // Reset Post Data
        wp_reset_postdata();
        ?>

【问题讨论】:

    标签: php wordpress woocommerce taxonomy related-posts


    【解决方案1】:

    我想我做到了。因此,如果此代码错误或可以简化,请更正它。 我想要 5 个产品结果。因此,如果可用,所有这些都应该来自 product_tag。如果不使用 product_cat。所以我在这里结合了 2 个 arg:

    <?php
            // get the custom post type's taxonomy terms
            $related_tag = wp_get_object_terms( $post->ID, 'product_tag', array('fields' => 'ids'));
            $related_cat = wp_get_object_terms( $post->ID, 'product_cat', array('fields' => 'ids'));
    
    
            // arguments 1
            $args1 = array(
            'post_type' => 'product',
            'post_status' => 'publish',
            'posts_per_page' => 5,
            'orderby' => '',
    
            'tax_query' => array(
    
                array(
    
                    'taxonomy'     => 'product_tag',
                    'field'        => 'id',
                    'terms'        =>  $related_tag,
                ),
    
            ),
            'post__not_in' => array ($post->ID),
             );
            // arguments 2
            $args2 = array(
            'post_type' => 'product',
            'post_status' => 'publish',
            'posts_per_page' => 5,
            'orderby' => 'rand',
    
            'tax_query' => array(
    
                array(
    
                    'taxonomy'     => 'product_cat',
                    'field'        => 'id',
                    'terms'        =>  $related_cat,
                ),
    
            ),
            'post__not_in' => array ($post->ID),
    
            );
    
            $related_items1 = new WP_Query( $args1 );
            $related_items2 = new WP_Query( $args2 );
            $related_items = new WP_Query();
            $related_items->posts = array_merge( $related_items1->posts, $related_items2->posts );
    
            $related_items3->post_count=5 - $related_items1->post_count;
    
            $related_items->post_count = $related_items1->post_count + $related_items3->post_count;
    
    
            // loop over query
            if ($related_items->have_posts()) :
            while ( $related_items->have_posts() ) : $related_items->the_post();
            ?>
            <div class="related_item">
              <div class="Related_image">
                <a href="<?php the_permalink() ?>"><?php the_post_thumbnail('thumbnail'); ?></a>
              </div>
                <div class="Related_title">
                  <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><h2>
    
                </div>
              </div>
            <?php
            endwhile;
            endif;
            // Reset Post Data
            wp_reset_postdata();
            ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 2016-09-04
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      • 2020-01-05
      相关资源
      最近更新 更多