Как удалить миниатюру товара, если в товар добавлено только одно изображение WooCommerce - PullRequest
1 голос
/ 21 мая 2019

Хорошо. Мне было интересно, смогу ли я удалить миниатюру товара со страницы одного товара, если товар имеет только одно изображение (т.е. только изображение товара). Так что, когда пользователь просматривает товар только с одним изображением, ему не нужно видеть миниатюра, но продукты с изображением продукта и изображения из галереи продуктов, эскиз может отображаться.

Есть ли способ достичь этого?

Я попробовал следующее, но у меня ничего не вышло (хотя код предназначен для полного удаления эскиза);

function remove_gallery_thumbnail_images() {
    if ( is_product() ) {
        remove_action( 'woocommerce_product_thumbnails', 'woocommerce_show_product_thumbnails', 20 );
    }
}
add_action('loop_start', 'remove_gallery_thumbnail_images');

Как мне этого добиться? отключить миниатюру, если у продукта есть только одно изображение, но отображать миниатюры, если у продукта есть несколько изображений.

Любая помощь приветствуется.

1 Ответ

1 голос
/ 21 мая 2019

Обычно woocommerce не показывает галерею, когда в ней нет миниатюр.

В вашем случае вы можете попробовать использовать следующее:

add_action( 'woocommerce_product_thumbnails', 'enable_gallery_for_multiple_thumbnails_only', 5 );
function enable_gallery_for_multiple_thumbnails_only() {
    global $product;

    if( ! is_a($product, 'WC_Product') ) {
        $product = wc_get_product( get_the_id() );
    }

    if( empty( $product->get_gallery_image_ids() ) ) {
        remove_action( 'woocommerce_product_thumbnails', 'woocommerce_show_product_thumbnails', 20 );
    }
}

Или, если изображениевключен в качестве эскиза в галерею, которую можно заменить в функции:

if( empty( $product->get_gallery_image_ids() ) ) {

следующей строкой:

if( sizeof( $product->get_gallery_image_ids() ) == 1 ) {

Код входит в файл functions.php вашей активной дочерней темы(или активная тема).Протестировано и работает.


Вы также можете скрыть галерею с помощью встроенного CSS:

add_action( 'woocommerce_before_single_product_summary', 'enable_gallery_for_multiple_thumbnails_only', 5 );
function enable_gallery_for_multiple_thumbnails_only() {
    global $product;

    if( ! is_a($product, 'WC_Product') ) {
        $product = wc_get_product( get_the_id() );
    }

    if( empty( $product->get_gallery_image_ids() ) ) {
        echo '<style> ol.flex-control-thumbs { display:none; } </style>';
    }
}

Или, если изображение включено в качестве эскиза в галерею, его можно заменить вfunction:

if( empty( $product->get_gallery_image_ids() ) ) {

следующей строкой:

if( sizeof( $product->get_gallery_image_ids() ) == 1 ) {

Код находится в файле functions.php вашей активной дочерней темы (или активной темы).Протестировано и работает.

Все это работает на темы, которые не связаны с настройками.

...