Настройка изображения товара цикла через хук в Woocommerce - PullRequest
0 голосов
/ 09 июня 2018

Я настраиваю темы woocommerce.Я застрял в цикле продукта, используя ловушку действия woocommerce.

Чтобы вызвать / включить миниатюру изображения в цикл, мы называем эту ловушку

<?php do_action('woocommerce_before_shop_loop_item_title'); ?>

И появляется миниатюра изображения.Я запутался, где находится местоположение <img src"" ....?Как редактировать этот код?

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Ответ LoicTheAztec очень хороший, но я думаю, что он содержит одну небольшую, но критическую ошибку.Мы удалили стандартный выходной (echo) хук и добавили не фильтр (он возвращает результат), а действие, поэтому мы должны сделать echo.Эта хитрая / невидимая ошибка съела мое время достаточно.:)

// there is
return $product ? $product->get_image( $image_size ) : '';
// should be
echo $product ? $product->get_image( $image_size ) : '';
0 голосов
/ 09 июня 2018

Крюк woocommerce_before_shop_loop_item_title загрузить изображение из код этой функции :

if ( ! function_exists( 'woocommerce_template_loop_product_thumbnail' ) ) {

    /**
     * Get the product thumbnail for the loop.
     */
    function woocommerce_template_loop_product_thumbnail() {
        echo woocommerce_get_product_thumbnail(); // WPCS: XSS ok.
    }
}

Так, как вы можете видеть, он использует woocommerce_get_product_thumbnail()функция для него:

if ( ! function_exists( 'woocommerce_get_product_thumbnail' ) ) {

    /**
     * Get the product thumbnail, or the placeholder if not set.
     *
     * @param string $size (default: 'woocommerce_thumbnail').
     * @param int    $deprecated1 Deprecated since WooCommerce 2.0 (default: 0).
     * @param int    $deprecated2 Deprecated since WooCommerce 2.0 (default: 0).
     * @return string
     */
    function woocommerce_get_product_thumbnail( $size = 'woocommerce_thumbnail', $deprecated1 = 0, $deprecated2 = 0 ) {
        global $product;

        $image_size = apply_filters( 'single_product_archive_thumbnail_size', $size );

        return $product ? $product->get_image( $image_size ) : '';
    }
}

Я надеюсь, что это ответит на ваш вопрос и устранит вашу путаницу.


Настройка изображения продукта цикла

Теперь вы можете удалить эту функцию по умолчанию из ловушки, чтобы добавить свою собственную, используя следующую команду:

remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
add_action( 'woocommerce_before_shop_loop_item_title', 'custom_loop_product_thumbnail', 10 );
function custom_loop_product_thumbnail() {
    global $product;
    $size = 'woocommerce_thumbnail';

    $image_size = apply_filters( 'single_product_archive_thumbnail_size', $size );

    return $product ? $product->get_image( $image_size ) : '';
}

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

Так что теперь вам просто нужно настроить код внутри функции…

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...