如何解决通过可变产品 id,如何按指定 SKU 显示变体产品
我想按指定的 skus 显示一些变体产品,而不是在可变产品 ID 中显示所有变体产品。
例如: 可变产品 ID 为:#556
- 可变产品 id #556 的子变体产品,我希望它通过指定的 skus 在索引页面上显示变体产品,以显示图像、标题和指向可变产品 id #556 页面的链接。
我下面的代码正在运行,但它显示了可变产品 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>';
}
?>
请如果你能帮忙。尝试了很长时间,似乎没有任何效果。
提前致谢。
解决方法
您可以通过初始化一系列您不想看到的产品变体 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>';
}
无法测试代码,但它应该可以工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。