根据当前产品属性返回产品列表

时间:2020-11-19 作者:Marney Fontana

我已经修改了我的单个产品。php并希望弹出一个共享相同品牌名称的其他产品块,我在名为“brand”的产品属性中指定了该品牌名称。

这是我迄今为止的代码,但它返回所有产品,而不是按pa\\U品牌过滤。

<!-- Custom 4 up product filtered by Brand attribute -->    
    <ul class="products">
                <?php
            $args = array(
                \'post_type\' => \'product\',
                \'posts_per_page\' => 4,
                \'taxonomy\' => \'pa_brand\',
                \'field\'    => \'slug\',
                \'terms\'    => $product->get_attribute( \'brand\' )
                );
            $loop = new WP_Query( $args );
            if ( $loop->have_posts() ) {
                while ( $loop->have_posts() ) : $loop->the_post();
                    wc_get_template_part( \'content\', \'product\' );
                endwhile;
            } else {
                echo __( \'No products found\' );
            }
            wp_reset_postdata();
        ?>
    </ul><!–/.products–>

1 个回复
最合适的回答,由SO网友:Nilesh Chouhan 整理而成

所以正如@shanebp建议您必须使用tax\\u查询,如果您在tax\\u查询中使用运算符,也会有所帮助。下面是您在做了一些小改动后的代码;

<ul class="products-newo">
    <?php
    $attributes = $product->get_attributes();
    $pa_brand = $attributes["pa_brand"];
        
    $args = array(
        \'post_type\' => \'product\',
        \'posts_per_page\' => 4,
        \'tax_query\'      => array( array(
            \'taxonomy\'        => \'pa_brand\',
            \'field\'           => \'slug\',
            \'terms\'           =>  $pa_brand->get_slugs(),
            \'operator\'        => \'IN\',
        ) )
        );
    $loop = new WP_Query( $args );
    
    if ( $loop->have_posts() ) {
        while ( $loop->have_posts() ) : $loop->the_post();
            wc_get_template_part( \'content\', \'product\' );
        endwhile;
    } else {
        echo __( \'No products found\' );
    }
    wp_reset_postdata();
?>
</ul>
但我还想建议您在$attributes=$product->;之后检查一个小条件;get\\u attributes();线if( isset($attributes["pa_brand"]) )否则,如果任何产品没有此值,您将得到错误。非常感谢。

相关推荐