Изображение товара исчезает при фильтрации функции WooCommerce для Sale Flash Badge в теме ROEN

Я пытаюсь показать, сколько процентов пользователь экономит на значке продаж в WooCommerce. Чтобы это работало без перезаписи значка «Рекомендуемые», мне нужно было добавить несколько фильтров в мои functions.php. Теперь все работает нормально, за исключением того, что изображение товара на странице товара исчезает, и я не могу понять, почему. Код «onsale Featured» в файле темы product-image.php почти такой же, как и код «onsale», и я не могу понять, почему изображение исчезает, когда продукт продается, а не когда он представлен ?

Мой код в functions.php

add_filter('woocommerce_sale_flash', 'my_custom_sale_flash' );
function my_custom_sale_flash($text) {
global $product;
if($product->is_on_sale()){
$percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
return '<span class="onsale">SPAR '.$percentage.' %</span>';
}elseif($product->is_featured()){
return '<span class="onsale featured">Utvalgt</span>';
}else if(!$product->is_in_stock()){
return '<span class="onsale">Utsolgt</span>';
}else  if(!$product->get_price()){
return '<span class="onsale">GRATIS</span>';
}
}

Код в product-image.php в теме ROEN

<?php
/**
* Single Product Image
*
* @author      WooThemes
* @package     WooCommerce/Templates
* @version     2.0.14
*/

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

global $post, $woocommerce, $product;

?>
<div class="images">

<?php
if ( has_post_thumbnail() ) {

$image_title        = "";
$image_link         = wp_get_attachment_url( get_post_thumbnail_id() );
$image              = get_the_post_thumbnail( $post->ID, apply_filters( 'single_product_large_thumbnail_size', 'shop_single' ), array('title' => $image_title) );

$attachment_count   = count( $product->get_gallery_attachment_ids() );

if ( $attachment_count > 0 ) {
$gallery = '[product-gallery]';
$zoom = "";
} else {
$gallery = '';
$zoom = 'zoom';
}



$html = '';

if($product->is_featured()){
$html = apply_filters('woocommerce_sale_flash', '<span class="featured onsale">'.__('Featured','ROEN').'</span>', $post, $product);
}else if($product->is_on_sale()){
$html = apply_filters('woocommerce_sale_flash', '<span class="onsale">'.__( 'Sale!', 'woocommerce' ).'</span>', $post, $product);
}else if(!$product->is_in_stock()){
$html = '<span class="outofstock">'.__('Out of Stock','ROEN').'</span>';
}else  if(!$product->get_price()){
$html = '<span class="free onsale">'.__('Free','ROEN').'</span>';
}

echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '<a href="%s" itemprop="image" class="woocommerce-main-image '.$zoom.'" title="%s"  rel="prettyPhoto' . $gallery . '" data-url="%s">%s'.$html.'</a>', $image_link, $image_title, $image_link ,  $image ), $post->ID );
} else {

echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '<img src="%s" alt="Placeholder" />', woocommerce_placeholder_img_src() ), $post->ID );

}
?>

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

</div>

Я не понимаю, почему возникает проблема? Рекомендуемые товары, которые не продаются, отображаются правильно как при просмотре из категории, так и на странице товара. Продукты, выставленные на продажу, отображаются правильно при просмотре из категории, но изображение исчезает на странице продукта.

Спасибо за ваше время.

0

Решение

Я получил это исправить, изменив

echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '<a href="%s" itemprop="image" class="woocommerce-main-image '.$zoom.'" title="%s" rel="prettyPhoto' . $gallery . '" data-url="%s">%s'.$html.'</a>', $image_link, $image_title, $image_link , $image ), $post->ID );

к

echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '<a href="%s" itemprop="image" class="woocommerce-main-image '.$zoom.'" title="%s" rel="prettyPhoto' . $gallery . '" data-url="%s">%s%s</a>', $image_link, $image_title, $image_link , $image, $html ), $post->ID );

Оказывается, WordPress не понравился знак процента в моем промежутке, который должен был отображаться в значке продаж, из-за способа кодирования темы ROEN.

Я говорю тебе, чувак, много странного кода в этой теме.

0

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

Других решений пока нет …