Sac*_*gar 19 php wordpress woocommerce
我正在创建一个woocommerce主题,我有产品变化,即大小,显示在产品详细信息页面上,但问题是我想通过使用产品ID获取我的自定义php页面中的所有变体,任何人都可以帮助我.
提前致谢.
Sha*_*nig 40
您可以使用: $available_variations = $product->get_available_variations();
如果这是单一样式模板,请确保添加global $product;到顶部附近.
从那里,您可以预先通过变化并按照您的意愿行事......因为您没有任何具体的输出,我希望这能让您走上正轨.
小智 20
您可以使用以下代码:
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
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
以下代码:
$variations = $product->get_available_variations();
Run Code Online (Sandbox Code Playgroud)
将返回所有产品的变化
此功能放在您显示所有变体的位置:
\wp-content\plugins\woocommerce\templates\single-product\add-to-cart\variable.php
Run Code Online (Sandbox Code Playgroud)
小智 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++;
}
?>
Run Code Online (Sandbox Code Playgroud)