Хорошо, мне было интересно, могу ли я удалить миниатюру продукта с одной страницы продукта, если продукт имеет только одно изображение (то есть только изображение продукта). Так что, когда пользователь просматривает продукт только с одним изображением, ему не нужно видеть миниатюру, но продукты с изображением продукта и изображениями галереи продуктов, миниатюра может отображаться.
Есть ли способ добиться этого?
Я пробовал следующее, но у меня это не сработало (хотя код предназначен для полного удаления миниатюры);
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');
Как я могу достичь этого? отключите миниатюру, если продукт имеет только одно изображение, но отобразите миниатюры, если продукт имеет несколько изображений.
Любая помощь очень приветствуется.
Обычно 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>';
}
}
Или, если изображение включено в качестве эскиза в галерею, вы можете заменить его в функции:
if ( empty( $product->get_gallery_image_ids() ) ) {
следующей строкой:
if ( sizeof( $product->get_gallery_image_ids() ) == 1 ) {
Код находится в файле functions.php вашей активной дочерней темы (или активной темы). Проверено и работает.
All this works on themes that doesn't make related customizations.
Спасибо @LoicTheAztec ... Версия CSS - это то, на что я пошел, моя тема удалила хук "woocommerce_product_thumbnails" и добавила их.