• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Картинка простого товара в сгруппированном товаре.

dim70

Опытный
#1
Добрый день! Вот этот код добавляет картинку к простому товару в составе сгруппированного:

PHP:
add_action( 'woocommerce_grouped_product_list_before_price', 'woocommerce_grouped_product_thumbnail' );

function woocommerce_grouped_product_thumbnail( $product ) {
    $image_size = array( 70, 70 );  // array( width, height ) image size in pixel 
    $attachment_id = get_post_meta( $product->id, '_thumbnail_id', true );
    ?>
    <td class="label">
        <?php echo wp_get_attachment_image( $attachment_id, $image_size ); ?>
    </td>
    <?php
}
Как сделать так, чтобы эта выводимая картинка стала кликабельна, то есть чтобы при нажатие картинка увеличивалась? Пример http://www.alkomprof.ru/tovar/kollektsiya-plitki-city-london-proizvodstvo-cerrol-polsha/ 43434.JPG
 

dim70

Опытный
#2
мне посоветовали использовать плагин Fancybox for WordPress. В этом плагине есть раздел "Extra FancyBox Calls (advanced)" который позволяет насколько я понял применять возможности плагина ко всем картинкам на странице сайта. Я использовал следующий код в разделе плагина "Extra FancyBox Calls (advanced)"
PHP:
jQuery(".label").fancybox({
  'transitionIn': 'elastic',
  'transitionOut': 'elastic',
  'speedIn': 600,
  'speedOut': 200,
  'type': 'iframe'
});
434124124.JPG

какой-то результат получился - стало открываться модальное окно, но в нём не полное изображение картинки, как хотелось бы мне, а просто страница ошибки 404 http://www.alkomprof.ru/tovar/kollektsiya-plitki-talisman-31x60-proizvodstvo-saloni-ispaniya/. Как всегда истина, где то рядом, но пока ухватить её не могу. Помогите советом.
 
Последнее редактирование:

dim70

Опытный
#3
вариант решения как бы с другой стороны:
PHP:
add_action( 'woocommerce_grouped_product_list_before_price', 'woocommerce_grouped_product_thumbnail' );

function woocommerce_grouped_product_thumbnail( $product ) {
    $image_size = array( 300, 300 );  // array( width, height ) image size in pixel
    $attachment_id = get_post_meta( $product->id, '_thumbnail_id', true );
    ?>
    <td class="label">
        <?php echo wp_get_attachment_image( $attachment_id, $image_size );


              echo '<a href="' . $large_image_url[0] . '" title="' . the_title_attribute('echo=0') . '" >';
   the_post_thumbnail('thumbnail'); // этот вот код я добавил
              echo '</a>'

        ?>
    </td>
    <?php
}
и теперь выводится две маленьких картинки, одна под другой, и нижняя стала кликабельна, но снова ведёт не на полное изображение, а на страницу сайта. Как мне сделать, чтобы при нажатие на маленькую картинку, она становилась большой?
 

dim70

Опытный
#6
скажите, мой вопрос очень сложный, что никто не смог ответить, или же наоборот очень простой?
 

Rodrigez

Форумчанин
#7
скажите, мой вопрос очень сложный, что никто не смог ответить, или же наоборот очень простой?
Код:
add_action( 'woocommerce_grouped_product_list_before_price', 'woocommerce_grouped_product_thumbnail' );
function woocommerce_grouped_product_thumbnail( $product ) {
    $image_size = array( 300, 300 );
    $attachment_id = get_post_meta( $product->id, '_thumbnail_id', true );
    ?>
    <td class="label">
        <?php echo '<a href="'. wp_get_attachment_image_url ( $attachment_id, "full" ) .'" title="'. the_title_attribute('echo=0') .'" >'. wp_get_attachment_image( $attachment_id, $image_size ). '</a>' ?>
    </td>
    <?php
}
Если не будет открываться попапом через fancybox попробуйте добавить в ссылку <a ... rel="fancybox" ... href
 

dim70

Опытный
#8
поменял свой код на Ваш. после этого вместо 5 товаров с картинками стал отображаться всего один и без картинки
было
PHP:
add_action( 'woocommerce_grouped_product_list_before_price', 'woocommerce_grouped_product_thumbnail' );

function woocommerce_grouped_product_thumbnail( $product ) {
    $image_size = array( 70, 70 );  // array( width, height ) image size in pixel
    $attachment_id = get_post_meta( $product->id, '_thumbnail_id', true );
    ?>
    <td class="label">
        <?php echo wp_get_attachment_image( $attachment_id, $image_size ); ?>
    </td>
    <?php
}
21.JPG
стало
PHP:
add_action( 'woocommerce_grouped_product_list_before_price', 'woocommerce_grouped_product_thumbnail' );
function woocommerce_grouped_product_thumbnail( $product ) {
    $image_size = array( 300, 300 );
    $attachment_id = get_post_meta( $product->id, '_thumbnail_id', true );
    ?>
    <td class="label">
        <?php echo '<a href="'. wp_get_attachment_image_url ( $attachment_id, "full" ) .'" title="'. the_title_attribute('echo=0') .'" >'. wp_get_attachment_image( $attachment_id, $image_size ). '</a>' ?>
    </td>
    <?php
}
22.JPG
 

Rodrigez

Форумчанин
#9
поменял свой код на Ваш. после этого вместо 5 товаров с картинками стал отображаться всего один и без картинки
Попробуйте варианты "full" заменить на 'full' или 'large' или wp_get_attachment_image_url (...) вообще на
PHP:
... wp_get_attachment_image_url( $attachment_id, '', 1 ) ...
 

dim70

Опытный
#11
вот если я использую такой вариант
PHP:
add_action( 'woocommerce_grouped_product_list_before_price', 'woocommerce_grouped_product_thumbnail' );

function woocommerce_grouped_product_thumbnail( $product ) {
    $image_size = array( 70, 70 );  // array( width, height ) image size in pixel
    $attachment_id = get_post_meta( $product->id, '_thumbnail_id', true );
    ?>
    <td class="label">
        <?php echo '<a href="' . $large_image_url[0] . '" title="' . the_title_attribute('echo=0') . '" >';
   the_post_thumbnail('thumbnail');
              echo '</a>'
      
        ?>
то получаю картинку кликабельной, title у картинки правильный появляется, но при нажатие на картинку открывается просто страница на которой находишься, http://www.alkomprof.ru/tovar/kollektsiya-plitki-akvarel-2-proizvodstvo-kerabud-rossiya/
 

Rodrigez

Форумчанин
#12
вот если я использую такой вариант
Не открывается потому что ссылка не вставляется вообще, там тупо код <a href title=..., т.е. ссылки href как таковой нет вообще. Я попробовал на тестовой площадке, мой код работает начиная с первого варианта и до последнего, непонятно почему у вас не срабатывает функция wp_get_attachment_image_url...

В вашем первоначальном коде $large_image_url необъявлена, попробуйте такой код
PHP:
<?php
add_action( 'woocommerce_grouped_product_list_before_price', 'woocommerce_grouped_product_thumbnail' );
function woocommerce_grouped_product_thumbnail( $product ) {
    $attachment_id = get_post_meta( $product->id, '_thumbnail_id', true );
    $large_image_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'large' ); 
    ?>
    <td class="label">
        <a href="<?php echo $large_image_url[0];?>" title="<?php the_title_attribute(''); ?>"><?php the_post_thumbnail( 'thumbnail' );  ?></a>    
    </td>
    <?php
}
 
Сверху Снизу