通过可变产品 ID,如何按指定的 SKU 显示变体产品
By a variable product id, how to display variations products by their specified SKUs
我想按指定的 SKU 显示一些变体产品,而不是显示可变产品 ID 中的所有变体产品。
例如:
可变产品 ID 为:#556
- 可变产品 ID #556 的子变体产品,我希望它按指定的 skus 在 index-page 上显示变体产品,以显示图像、标题和 link 到可变产品 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>';
}
代码无法测试,但应该可以。
我想按指定的 SKU 显示一些变体产品,而不是显示可变产品 ID 中的所有变体产品。
例如: 可变产品 ID 为:#556
- 可变产品 ID #556 的子变体产品,我希望它按指定的 skus 在 index-page 上显示变体产品,以显示图像、标题和 link 到可变产品 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>';
}
代码无法测试,但应该可以。