Добавление пользовательских изображений в мини-корзину WooCommerce в зависимости от количества/категории

Вероятно, базовая, которую я просто немного от решения. По сути, я создаю интернет-магазин, продающий пивные бутылки по 12 штук в ящике с возможностью смешивания любого из 7 разных сортов пива. На данный момент я включил мини-тележку, чтобы показать наполнение ящика - бутылка за бутылкой - с каждой добавленной бутылкой, которая основана на общей сумме тележки.

<?php if( WC()->cart->get_cart_contents_count() == 0){ 
    echo '<img src="***image-with-0-bottles" alt="icon" />';
} 

elseif( WC()->cart->get_cart_contents_count() == 1){ 
    echo '<img src="***image-with-1-bottle.png" alt="icon" />';
}

elseif( WC()->cart->get_cart_contents_count() == 2){ 
    echo '<img src="***image-with-2-bottle2.png" alt="icon" />';
}

и тд и тд и тп.

Вышеупомянутое, вероятно, является излишне запутанным способом сделать это, но главная проблема заключается в том, что вышеуказанное должно происходить только тогда, когда в корзину добавляется одна конкретная категория, т.е. только для отдельных бутылок. Если в корзину добавлена ​​какая-либо другая категория, я бы хотел, чтобы изображения оставались прежними и менялись только при добавлении «одной бутылки».

Немного новый. Немного застрял. Немного PHP-бедный! Я пробовал много вещей, которые я читал, но у меня просто нет знаний, чтобы по-настоящему понять, где я стою. Любая помощь будет так приветствоваться.


person SBNewland    schedule 06.09.2017    source источник


Ответы (1)


Когда вы показываете код для шаблона мини-корзины, у вас есть это в отношении миниатюр (line 38):

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

Это означает, что вы можете манипулировать миниатюрами мини-корзины.

Но для вашей специальной категории продуктов, поскольку она основана на общем количестве корзин, вы получите одно и то же изображение для всех товаров этой категории продуктов.

Вот пример этого кода:

add_filter( 'woocommerce_cart_item_thumbnail', 'custom_cart_item_thumbnail', 10, 3 );
function custom_cart_item_thumbnail( $thumbnail, $cart_item, $cart_item_key ){
    // Only for Mini Cart
    if( is_cart() ) return $thumbnail;

    $product = $cart_item['data'];
    $product_id = $product->get_id();
    $cart_item_count = WC()->cart->get_cart_contents_count();

    // Set here your product category like 'case-dozen'
    if( has_term( 'case-dozen', 'product_cat', $product_id ) ){
        // Total cart item count based
        if ( 0 == $cart_item_count )
            $thumbnail = '<img src="/image-with-0-bottles.png" alt="icon" />';
        elseif ( 1 == $cart_item_count )
            $thumbnail = '<img src="/image-with-1-bottle.png" alt="icon" />';
        elseif ( 2 == $cart_item_count )
            $thumbnail = '<img src="/image-with-2-bottle2.png" alt="icon" />';
    }
    return $thumbnail;
}

Код находится в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

Это должно работать.

person LoicTheAztec    schedule 07.09.2017
comment
Привет, @loictheaztec, майор, спасибо, что вернулся ко мне. Это, безусловно, работает с миниатюрами. Я пытался использовать некоторые ссылки в своем сценарии, и мне не повезло. Изображение, которое меняется в зависимости от содержимого корзины, находится в файле mini-cart.php, а не в миниатюре. Например, вот как это выглядит с тремя бутылками в тележке: i67.tinypic.com/2yu0pxd.png Все функциональные возможности работают, но ограничение изменения этого раздела «футляра для бутылок» одной конкретной категорией - это то, с чем я борюсь. Надеюсь, это имеет смысл. - person SBNewland; 07.09.2017
comment
Фактически, вы также можете увидеть более четкую реальную страницу: fcb.eb8.myftpupload.com /siop-shop - person SBNewland; 07.09.2017
comment
Так рад вашей помощи. Огромное спасибо! - person SBNewland; 12.09.2017