26

私は woocommerce テーマを作成しており、製品の詳細ページに表示される製品のバリエーション、つまりサイズがありますが、製品 ID を使用してカスタム PHP ページですべてのバリエーションを取得したいという問題があります。

前もって感謝します。

4

5 に答える 5

49

以下を使用できます。$available_variations = $product->get_available_variations();

これが単一のスタイル テンプレートの場合は、必ずglobal $product;上部近くに追加してください。

そこから、バリエーションを foreach して、必要に応じて実行できます...特定の出力がなかったので、これが正しい軌道に乗ることを願っています。

于 2012-11-20T06:11:33.660 に答える
31

以下のコードを使用できます。

global $woocommerce, $product, $post;
// test if product is variable
if ($product->is_type( 'variable' )) 
{
    $available_variations = $product->get_available_variations();
    foreach ($available_variations as $key => $value) 
    { 
        //get values HERE  
    }
}
于 2016-12-07T11:02:33.367 に答える
10

次のコード:

$variations = $product->get_available_variations();

製品のすべてのバリエーションを返します

この関数は、すべてのバリエーションを表示する場所に配置されます。

\wp-content\plugins\woocommerce\templates\single-product\add-to-cart\variable.php
于 2014-03-03T07:23:12.337 に答える
0

これを試して、

<?php
$name_size = get_post_meta($_GET['pr_id'],'product_size', true);
$t_shirt_sizes_array = wp_get_post_terms($_GET['pr_id'],'pa_size');
$t_shirt_size = array();
$t_shirt_price = array();
for($scnt = 0; $scnt < count($t_shirt_sizes_array); $scnt++){
$t_shirt_size[] = $t_shirt_sizes_array[$scnt]->name;
$t_shirt_price[] = $t_shirt_sizes_array[$scnt]->slug;
$t_shirt_size_id[] = $t_shirt_sizes_array[$scnt]->term_id;
}
$cnt = 1;
for($i = 0; $i < count($t_shirt_size); $i++){
$name_size = $t_shirt_size[$i];

$result = $wpdb->get_col( "SELECT slug FROM {$wpdb->prefix}terms WHERE name = 
'".$t_shirt_size[$i]."'" );
$term_slug = ( !empty( $result ) ) ? $result[0] : $term;
 $query = "SELECT postmeta.post_id AS product_id
    FROM {$wpdb->prefix}postmeta AS postmeta
LEFT JOIN {$wpdb->prefix}posts AS products ON ( products.ID = postmeta.post_id )
    WHERE postmeta.meta_key LIKE 'attribute_%'
        AND postmeta.meta_value = '$term_slug'
        AND products.post_parent = ".$_GET['pr_id'];    
$variation_id = $wpdb->get_col( $query );

$parent = wp_get_post_parent_id( $variation_id[0] );
if ( $parent > 0 ) {                    
    echo $name_size;
    $_product = new WC_Product_Variation( $variation_id[0] );
    echo $_product->get_price();
}
$price = $t_shirt_price[$i];
$cnt++;
}
?>
于 2012-11-20T06:09:32.870 に答える