Wordpress 根据可变产品id,如何按指定的SKU显示不同的产品

Wordpress 根据可变产品id,如何按指定的SKU显示不同的产品,wordpress,woocommerce,product-variations,variable-product,Wordpress,Woocommerce,Product Variations,Variable Product,我希望按指定的SKU显示一些变体产品,而不是在可变产品id中显示所有变体产品 例如: 变量产品id为:#556 可变产品id#556的子变体产品,我希望它在索引页上按指定的SKU显示变体产品,以显示图像、标题和到可变产品id#556页的链接 我下面的代码正在运行,但它显示了变量product id 556中产品的每个变体。我需要有选择性的,其中,变化的产品,以显示其指定的SKU显示图像,标题和链接 这是我的密码: <?php $product = new WC_Product_Var

我希望按指定的SKU显示一些变体产品,而不是在可变产品id中显示所有变体产品

例如: 变量产品id为:#556

  • 可变产品id#556的子变体产品,我希望它在索引页上按指定的SKU显示变体产品,以显示图像、标题和到可变产品id#556页的链接
我下面的代码正在运行,但它显示了变量product id 556中产品的每个变体。我需要有选择性的,其中,变化的产品,以显示其指定的SKU显示图像,标题和链接

这是我的密码:

<?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>';
}
?>

请帮忙。我试了很长时间,似乎什么都没用


提前感谢。

您可以通过初始化一系列您不想看到的产品变体SKU来实现这一点

然后在循环中,您可以检查阵列中是否存在当前变化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>';
}
$product=新的WC\U product\U变量(556);
//初始化不显示产品变体SKU的阵列
$sku=数组('sku-1','sku-2','sku-3');
$variations=$product->get_available_variations();
foreach($product->get_variation_attributes()作为$attribute_name=>$attribute){
$attributes[]=数组('term\u name'=>ucwords(str\u replace('attribute\u','',wc\u attribute\u分类法\u slug($attribute\u name))),'option'=>$attribute,);
} 
foreach($variation作为$variation){
//如果产品变体的sku不在阵列中,则继续下一个变体
if(!in_数组($variation['sku'],$sku)){
继续;
}
//否则
回声';
回声';
回声';
回波内爆(str_替换(''''','$variation['attributes']);
回声';
回声';
回声';
}

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

非常感谢您的帮助,这符合预期。我可以问一个问题吗?如何获取属性?例如:我为这个变体产品设置了属性,希望通过“slug name”显示属性,即“voltage”。有可能吗?再次感谢您的大力帮助。祝您度过愉快的一天。使用
$variation['attributes']
您将获得一个包含产品变体所有属性的数组。如果只想获得具有缓动电压的属性值,可以使用
$variation['attributes']['attribute\u pa\u voltage']
。通过这种方式,您可以获得variation属性的slug(或slug)。要从属性术语slug中获取名称,请查看。非常感谢您提供的信息。这解决了我的问题,祝你度过愉快的一天:)