2015-06-09 1 views
2

Мне интересно, есть ли способ показать миниатюру родительского продукта для всех дочерних продуктов на страницах корзины и выписки в WooCommerce. Есть ли фильтр для выполнения чего-то подобного?Получить родительский миниатюрный фильтр продукта в WooCommerce Корзина и оформление заказа

ответ

1

Все миниатюры в корзине выполняются через woocommerce_cart_item_thumbnailfilter:

$thumbnail = apply_filters('woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key); 

Однако, если изменение не имеет свой собственный эскиз, WooCommerce автоматически покажет его parent's thumbnail:

/** 
* Gets the main product image. 
* 
* @param string $size (default: 'shop_thumbnail') 
* @return string 
*/ 
public function get_image($size = 'shop_thumbnail', $attr = array()) { 
    if ($this->variation_id && has_post_thumbnail($this->variation_id)) { 
     $image = get_the_post_thumbnail($this->variation_id, $size, $attr); 
    } elseif (has_post_thumbnail($this->id)) { 
     $image = get_the_post_thumbnail($this->id, $size, $attr); 
    } elseif (($parent_id = wp_get_post_parent_id($this->id)) && has_post_thumbnail($parent_id)) { 
     $image = get_the_post_thumbnail($parent_id, $size , $attr); 
    } else { 
     $image = wc_placeholder_img($size); 
    } 
    return $image; 
} 

Если вы этого не видите, возможно, у вас есть устаревшие шаблоны тем.

EDIT

С дополнительной информацией, вы, очевидно, имея в виду сгруппированных продуктов. Вы всегда можете сказать, «продукт» сгруппирован, так как его post_parent установлен на идентификатор продукта сгруппированного продукта. Продукт верхнего уровня как post_product 0. Вы можете найти post_parent информации в данных, передаваемых на первый фильтр я упомянул: woocommerce_cart_item_thumbnail придумать следующее:

add_filter('woocommerce_cart_item_thumbnail', 'so_30736886_cart_item_thumbnail', 10, 3); 
function so_30736886_cart_item_thumbnail($image, $cart_item, $cart_item_key){ 
    if(isset($cart_item['product_id']) && isset($cart_item['data']) && $cart_item['data']->post->post_parent > 0){ 
     $_parent = wc_get_product($cart_item['data']->post->post_parent); 
     $image = $_parent->get_image(); 
    } 

    return $image; 
} 

Если продукт имеет post_parent то мы получаем миниатюру для родительского продукта «Группа».

+0

Спасибо за ответ. Я фактически устанавливаю признакам для каждого связанного продукта группы. Но признакам изображения являются сплошной цвет .jpg, чтобы показать цвет, соответствующий каждому связанному продукту. Но в страницах корзины, которые я хотел бы показать, замените миниатюры дочерних продуктов на их родительское изображение. Кажется, не кажется, что кто-то пытается сделать это до сих пор. – Sat

+0

Первый фильтр, который я упомянул, по-прежнему актуальен в вашем случае и, возможно, добавляет эту информацию в исходный вопрос. – helgatheviking

Смежные вопросы