[英]Get product variation images on Woocommerce shop page
我本质上想要实现的是在商店页面上显示产品变体图像(每个变体的特定图像)。 我成功地使用下面的代码获得了变体的名称(放入“content-product.php”):
<?php
$colourvalues = get_the_terms( $product->id, 'pa_colour');
foreach ( $colourvalues as $colourvalue ) {
echo $colourvalue->name;
}
?>
不幸的是, $colouvalues
数组中没有任何内容是变体图像 url 或与图像相关的任何内容。
有人请帮助我吗?
您可以获得产品变体的列表:
// In the product loop:
$variations = $product->get_available_variations();
// Outside the product loop:
$product = new WC_Product_Variable( $product_id );
$variations = $product->get_available_variations();
循环遍历它以从每个变体中获取图像,如下所示:
foreach ( $variations as $variation ) {
echo $variation['image_src'];
}
对于 Woocommerce 3. 创建变体数组后,像这样循环。
foreach ( $variations as $variation ) {
echo $variation['image']['url'];
}
在函数文件中
add_action('woocommerce_after_shop_loop_item_title','woocommerce_template_single_excerpt', 5);
function woocommerce_template_single_excerpt() {
global $product;
if ($product->product_type == "variable" && (is_shop() )) {
echo woocommerce_variable_product();
}
}
由于WooCommerce 3,您的代码已过时: $product->id
应为$product->get_id()
有多种方法可以满足您的要求。 下面的两个代码段将在按钮下方的WooCommerce存档页面(作为商店)中显示变量产品的产品属性“颜色”的变化值和相应的变化缩略图。
它们都使用钩子函数,并且将给出大致相同的结果:
1)第一种方式(可以设置缩略图的大小):
add_action( 'woocommerce_after_shop_loop_item', 'loop_display_variation_attribute_and_thumbnail' );
function loop_display_variation_attribute_and_thumbnail() {
global $product;
if( $product->is_type('variable') ){
foreach ( $product->get_visible_children() as $variation_id ){
// Get an instance of the WC_Product_Variation object
$variation = wc_get_product( $variation_id );
// Get "color" product attribute term name value
$color = $variation->get_attribute('color');
if( ! empty($color) ){
// Display "color" product attribute term name value
echo $color;
// Display the product thumbnail with a defined size (here 30 x 30 pixels)
echo $variation->get_image( array(30, 30) );
}
}
}
}
2)其他方式:
add_action( 'woocommerce_after_shop_loop_item', 'loop_display_variation_attribute_and_thumbnail' );
function loop_display_variation_attribute_and_thumbnail() {
global $product;
// HERE your targeted product attribute taxonomy
$taxonomy = 'pa_color';
if( $product->is_type('variable') ){
foreach ( $product->get_available_variations() as $variation ){
if( isset($variation['attributes']['attribute_'.$taxonomy]) ){
// Get the "pa_color"
$term_name = get_term_by('slug', $variation['attributes']['attribute_'.$taxonomy], $taxonomy)->name;
// Display "Color" product attribute term name value
echo $term_name;
// Display the product thumbnail
echo '<img src="' . $variation['image']['thumb_src'] .'">';
}
}
}
}
代码进入您的活动子主题(或活动主题)的function.php文件中。 经过测试和工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.