获取当前产品的产品属性并将其存储在变量中

时间:2016-09-23 作者:clestcruz

我一直在想如何获取当前产品的产品属性,并将其存储在变量中,然后将其放入类中。

我已经成功地获得了产品属性,不幸的是,它似乎显示了我设置的所有产品的所有产品属性。这是我一直在工作的代码。

    <div id="Container" class="nine columns mixitup-container bevtools-liquor">

        <?php

        $liquor = new WP_Query( array( 
            \'post_type\'   => \'product\',
            \'product_cat\' => \'liquors\',
            \'meta_query\'  => array(
                array(
                    \'key\'   => \'_stock_status\',
                    \'value\' => \'instock\'
                )
            )
        ) );

        if ( $liquor->have_posts() ) : while ( $liquor->have_posts() ) : $liquor->the_post();
        ?>


        //In this foreach loop, I\'m trying to get all the terms for liquor-brands attributes

        <?php 
        $brand_terms = get_the_terms( $post, \'pa_liquor-brands\' );
        foreach ( $brand_terms as $term ) :
        ?>

        <?php $brand_string = \'\'; ?>
        <?php $brand_string .= $term->slug . \' \'; ?>

        <?php endforeach; ?>



        <div id="post-<?php the_ID(); ?>" class="three columns mix product-post <?php echo $brand_string  ?>" >
        </div>


        <?php wp_reset_postdata(); ?>

        <?php endwhile; else: ?>

        <?php //error message ?>

        <?php endif; ?>


        <?php wp_reset_query(); ?>
运行代码后,这里是输出的样子。

<div id="post-2190" class="34th-pursuit-joes-brew absolut aviation-gin bacardi botanist citadelle-gin don-papa gvine grey-goose jack-daniel johnnie-walker makers-mark monkey-shoulder pale-ale-katipunan" style="display: inline-block;" data-bound="">
</div>

<div id="post-2192" class="34th-pursuit-joes-brew absolut aviation-gin bacardi botanist citadelle-gin don-papa gvine grey-goose jack-daniel johnnie-walker makers-mark monkey-shoulder pale-ale-katipunan" style="display: inline-block;" data-bound="">
</div>
正如您所看到的,这两个产品都显示了所有产品属性,而不是显示分配给它们的内容。

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

get_terms() 检索给定分类法或分类法列表中的术语。

你需要的是

get_the_terms() 检索分类的术语,这些术语是attached to the post.

因此,您可以简单地替换

$brand_terms = get_terms( \'pa_liquor-brands\' );
使用

$brand_terms = get_the_terms( $post, \'pa_liquor-brands\' );
这应该是关键。

您可以在此处阅读有关这两个函数的更多信息:

https://developer.wordpress.org/reference/functions/get_terms/https://developer.wordpress.org/reference/functions/get_the_terms/

Edit:您还需要重置$brand_string 否则,它将添加来自其他帖子的术语并输出它们

$brand_terms = get_the_terms($post, \'pa_liquor-brands\');
$brand_string = \'\'; // Reset string
foreach ($brand_terms as $term) :
    $brand_string .= $term->slug . \' \';
endforeach;

// echo $brand_string down here somewhere