私は woocommerce テーマを作成しており、製品の詳細ページに表示される製品のバリエーション、つまりサイズがありますが、製品 ID を使用してカスタム PHP ページですべてのバリエーションを取得したいという問題があります。
前もって感謝します。
私は woocommerce テーマを作成しており、製品の詳細ページに表示される製品のバリエーション、つまりサイズがありますが、製品 ID を使用してカスタム PHP ページですべてのバリエーションを取得したいという問題があります。
前もって感謝します。
以下を使用できます。$available_variations = $product->get_available_variations();
これが単一のスタイル テンプレートの場合は、必ずglobal $product;
上部近くに追加してください。
そこから、バリエーションを foreach して、必要に応じて実行できます...特定の出力がなかったので、これが正しい軌道に乗ることを願っています。
以下のコードを使用できます。
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
}
}
次のコード:
$variations = $product->get_available_variations();
製品のすべてのバリエーションを返します
この関数は、すべてのバリエーションを表示する場所に配置されます。
\wp-content\plugins\woocommerce\templates\single-product\add-to-cart\variable.php
これを試して、
<?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++;
}
?>