web-dev-qa-db-ja.com

現在の商品の商品属性を取得し、それを変数に格納する

現在の商品の商品属性を取得し、それを変数に格納してクラスに入れる方法を見つけようとしていました。

私は商品属性を取得することができました、残念ながらそれは私が設定したすべての商品にすべての商品属性を表示しているようです。これが私が取り組んできたコードです。

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

ご覧のとおり、両方の商品は、割り当てられているものではなく、すべての商品属性を表示しています。

3
clestcruz

get_terms()指定された分類法または分類法のリストから用語を取り出します。

必要なのは

get_the_terms()ポストに付加されている の分類法の用語を検索します

だからあなたは単に置き換えることができます

$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/

編集: そして、あなたはまたあなたの$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
4
ngearing