Получить идентификатор продукта в хуке фильтра woocommerce_product_get_image - PullRequest
0 голосов
/ 24 мая 2018

Некоторые из наших продуктов используют внешнее изображение вместо миниатюры поста, для этого URL настроен acf.Похоже, что вы можете отфильтровать функцию woocommerce get_image(), но я не могу найти способ получить идентификатор текущего продукта, чтобы получить поле.

Вот что у меня есть:

function offsite_product_images($image_url, //variable $this wont work here){
    //need some way to get the current product's id
    if(get_field('thumbnail_url', $id)){
        $image_url = get_field('thumbnail_url', $id);
    }
    return $image_url;
}
add_filter( 'woocommerce_product_get_image', 'offsite_product_images');

функция get_image () woocommerce:

public function get_image( $size = 'woocommerce_thumbnail', $attr = array(), $placeholder = true ) {
    if ( has_post_thumbnail( $this->get_id() ) ) {
        $image = get_the_post_thumbnail( $this->get_id(), $size, $attr );
    } elseif ( ( $parent_id = wp_get_post_parent_id( $this->get_id() ) ) && has_post_thumbnail( $parent_id ) ) {
        $image = get_the_post_thumbnail( $parent_id, $size, $attr );
    } elseif ( $placeholder ) {
        $image = wc_placeholder_img( $size );
    } else {
        $image = '';
    }

    return apply_filters( 'woocommerce_product_get_image', wc_get_relative_url( $image ), $this, $size, $attr, $placeholder, $image );
}

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

Любая помощь в получении продукта или его идентификатора будет передана моему фильтру.

1 Ответ

0 голосов
/ 24 мая 2018

Ваш код функции неполный, в качестве объекта WC_Product отсутствуют некоторые аргументы, которые вам нужны для получения идентификатора продукта.Попробуйте следующее:

add_filter( 'woocommerce_product_get_image', 'offsite_product_images', 10, 5 );
function offsite_product_images( $image_url, $product, $size, $attr, $placeholder ){
    if( get_field('thumbnail_url', $product->get_id() ) ){
        $image_url = get_field('thumbnail_url', $product->get_id() );
    }
    return $image_url;
}

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

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