通过可变产品 ID,如何按指定的 SKU 显示变体产品

By a variable product id, how to display variations products by their specified SKUs

我想按指定的 SKU 显示一些变体产品,而不是显示可变产品 ID 中的所有变体产品。

例如: 可变产品 ID 为:#556

我下面的代码正在运行,但它显示了可变产品 ID 556 中产品的每个变体。我需要进行选择,变体产品要按其指定的 skus 显示以显示图像、标题和 link.

这是我的代码:

<?php 
$product = new WC_Product_Variable( '556' ); 
$variations = $product->get_available_variations(); 

foreach ( $product->get_variation_attributes() as $attribute_name => $attribute ) { 
    $attributes[] = array( 'term_name' => ucwords( str_replace( 'attribute_', '', 
    wc_attribute_taxonomy_slug( $attribute_name ) ) ), 'option' => $attribute, ); 
} 

foreach ( $variations as $variation ) { 
    echo '<div class="index_main_products col-xs-12 col-sm-12 col-md-6 col-lg-4 col-xl-3">';
    echo '<a href="'.$product->get_permalink().'#variations-table">';
    echo "<img src=" . $variation['image']['thumb_src'] .">";
    echo '</a>';

    echo '<h2>';
    echo implode(str_replace('_', ' ',  $variation['attributes']));
    echo '</h2>';

    echo '<a class="index_button button" href="'.$product->get_permalink().'">View Product</a>';
    echo '</div>';
}
?>

如果你能帮上忙,请帮忙。已经尝试了很长时间,但似乎没有任何效果。

提前致谢。

您可以通过初始化您不想看到的产品变体 skus 数组来实现。

然后在循环中您可以检查数组中是否存在当前变体 sku。如果是,则不显示,继续下一个产品。

$product = new WC_Product_Variable( 556 );
// initializes an array with product variation skus not to be displayed
$skus = array( 'sku-1', 'sku-2', 'sku-3' );
$variations = $product->get_available_variations(); 

foreach ( $product->get_variation_attributes() as $attribute_name => $attribute ) { 
    $attributes[] = array( 'term_name' => ucwords( str_replace( 'attribute_', '', wc_attribute_taxonomy_slug( $attribute_name ) ) ), 'option' => $attribute, ); 
} 

foreach ( $variations as $variation ) { 
    // if the sku of the product variation is not in the array it continues to the next variation
    if ( ! in_array( $variation['sku'], $skus ) ) {
        continue;
    }
    // otherwise
    echo '<div class="index_main_products col-xs-12 col-sm-12 col-md-6 col-lg-4 col-xl-3">';
    echo '<a href="'.$product->get_permalink().'#variations-table">';
    echo "<img src=" . $variation['image']['thumb_src'] .">";
    echo '</a>';
    echo '<h2>';
    echo implode(str_replace('_', ' ',  $variation['attributes']));
    echo '</h2>';
    echo '<a class="index_button button" href="'.$product->get_permalink().'">View Product</a>';
    echo '</div>';
}

代码无法测试,但应该可以。