woocommerce变化

Sac*_*gar 19 php wordpress woocommerce

我正在创建一个woocommerce主题,我有产品变化,即大小,显示在产品详细信息页面上,但问题是我想通过使用产品ID获取我的自定义php页面中的所有变体,任何人都可以帮助我.

提前致谢.

Sha*_*nig 40

您可以使用: $available_variations = $product->get_available_variations();

如果这是单一样式模板,请确保添加global $product;到顶部附近.

从那里,您可以预先通过变化并按照您的意愿行事......因为您没有任何具体的输出,我希望这能让您走上正轨.

  • 需要注意的是,在某些情况下,您可以获得"调用未定义方法"致命错误,因此最好检查您是否在正确的对象上调用方法(WC_Product_Variable而不是WC_Product_Simple),如下所示:if($ product-> product_type =='variable')... (7认同)

小智 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)