WooCommerce — пользовательские миниатюры и заполнитель изображения по умолчанию

Я просто хочу вставить оболочку в woocommerce_get_product_thumbnail. Я вижу, что моя оболочка появилась, но у нее нет запасного изображения, если ее нет.

Как вывести миниатюру woocommerce по умолчанию?

Это мой неполный код:

remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);
add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);

if ( ! function_exists( 'woocommerce_template_loop_product_thumbnail' ) ) {
function woocommerce_template_loop_product_thumbnail() {
echo woocommerce_get_product_thumbnail();
}
}
if ( ! function_exists( 'woocommerce_get_product_thumbnail' ) ) {
function woocommerce_get_product_thumbnail( $size = 'shop_catalog', $placeholder_width = 0, $placeholder_height = 0  ) {
global $post, $woocommerce;
$output = '<div class="col-lg-4">';

if ( has_post_thumbnail() ) {
$output .= get_the_post_thumbnail( $post->ID, $size );
} else {
how to show the default woocommerce thumb
}
$output .= '</div>';
return $output;
}
}

3

Решение

Я добавил init крючок для remove_action & add_action в начале, чтобы запустить его, когда WordPress / WooCommerce инициализирует …

Как $placeholder_width = 0, $placeholder_height = 0 устарела с версии 2.0 woocommerce (видеть это). Они вам больше не нужны, и это может быть частью вашей проблемы.

Замечания: Ответ Pallavi правильно для $output .= wc_placeholder_img( $size ); в вашем другом заявлении. Я уже проголосовал за него за это …

Поэтому я немного изменил ваш код:

add_action('init', function(){
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);
add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);
}

if ( ! function_exists( 'woocommerce_template_loop_product_thumbnail' ) ) {
function woocommerce_template_loop_product_thumbnail() {
echo woocommerce_get_product_thumbnail();
}
}

if ( ! function_exists( 'woocommerce_get_product_thumbnail' ) ) {
function woocommerce_get_product_thumbnail( $size = 'shop_catalog' ) {
global $post, $woocommerce;
$output = '<div class="col-lg-4">';

if ( has_post_thumbnail() ) {
$output .= get_the_post_thumbnail( $post->ID, $size );
} else {
$output .= wc_placeholder_img( $size );
// Or alternatively setting yours width and height shop_catalog dimensions.
// $output .= '<img src="' . woocommerce_placeholder_img_src() . '" alt="Placeholder" width="300px" height="300px" />';
}
$output .= '</div>';
return $output;
}
}
7

Другие решения

Попробуйте код ниже

remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);
add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);

if ( ! function_exists( 'woocommerce_template_loop_product_thumbnail' ) ) {
function woocommerce_template_loop_product_thumbnail() {
echo woocommerce_get_product_thumbnail();
}
}
if ( ! function_exists( 'woocommerce_get_product_thumbnail' ) ) {
function woocommerce_get_product_thumbnail( $size = 'shop_catalog', $placeholder_width = 0, $placeholder_height = 0  ) {
global $post, $woocommerce;
$output = '<div class="col-lg-4">';

if ( has_post_thumbnail() ) {
$output .= get_the_post_thumbnail( $post->ID, $size );
} else {
$output .= wc_placeholder_img( $size );
}
$output .= '</div>';
return $output;
}
}
2

По вопросам рекламы [email protected]