Дополнительные значки продаж для категорий товаров не отображаются

Мне нужно сделать распродажи бейджей для 3 разных категорий товаров — продажа, скидка & Склад.
Я просто захожу в папку «woocommerce» в моей теме, открываю sale-flash.php файл (тот же код, что и по умолчанию woocommerce sale-flash.php шаблон, но с некоторыми дополнениями от меня и другого парня.)
Таким образом, проблема заключается в том, что значок отображается при просмотре страницы категории продукта, но не отображается на главной странице.

    <!-- MORE BADGES -->
<?php
if ( has_term ('sale') || is_product_category('sale') || is_product_tag('sale_tag') ):

echo apply_filters(
'woocommerce_sale_flash',
'<div class="sale_tag">
<div class="ribbon" style="width: 40px;!important height: 90px;!important padding-top: 30px !important;height: 135px;padding-top: 80px;">
<strong class="ribbon-content">
<span>' .__( 'Sale', 'woocommerce' ) . '</span>
</strong>
</div>
</div>', $post, $product
);

elseif ( is_product_category('stock') ):

?>

<?php echo apply_filters(
'woocommerce_sale_flash',
'<div class="sale_tag">
<div class="ribbon" style="width: 40px;!important height: 90px;!important padding-top: 40px !important">
<strong class="ribbon-content">
<span>' .__( 'Stock', 'woocommerce' ) . '</span>
</strong>
</div>
</div>', $post, $product
);

elseif ( is_product_category('discount') ):

echo apply_filters(
'woocommerce_sale_flash',
'<div class="sale_tag">
<div class="ribbon" style="width: 40px;!important height: 90px;!important padding-top: 40px !important">
<strong class="ribbon-content">
<span>' .__( 'Discount', 'woocommerce' ) . '</span>
</strong>
</div>
</div>', $post, $product
); ?>

Этот код я нашел в «content-product.php»

<?php
/**
* woocommerce_before_shop_loop_item_title hook
*
* @hooked woocommerce_show_product_loop_sale_flash - 10
* @hooked woocommerce_template_loop_product_thumbnail - 10
*/
do_action( 'woocommerce_before_shop_loop_item_title' );
?>

Или я должен сделать что-то вроде этого:

$cats = wp_get_post_terms( $post->ID, "product_cat" );
foreach ( $cats as $cat ) {
$cats_array[] .= $cat->term_id;
}

$tags = wp_get_post_terms( $post->ID, "product_tag" );
foreach ( $tags as $tag ) {
$tags_array[] .= $tag->term_id;
}

Чтобы отобразить ленту для продукта с пользовательской категорией?

-1

Решение

Вы путаете если еще синтаксис.
Используйте либо альтернативный синтаксис, используя ::

  <?php
if ( is_product_category('sale') || is_product_tag('sale_tag') ):

// Echo content here

elseif ( is_product_category('stock') ):

// Echo content here

endif;
?>

Или используйте обычный синтаксис, используя {}:

  <?php
if ( is_product_category('sale') || is_product_tag('sale_tag') ){

// Echo content here

} elseif ( is_product_category('stock') ){

// Echo content here

}
?>

Не используйте оба синтаксиса одновременно.

По умолчанию sale-flash.php включается через woocommerce_show_product_loop_sale_flash() функция, которая подключена к двум действиям: woocommerce_before_shop_loop_item_title выполняется до цикла продукта, используемого на страницах архива продукта и категорий. Другое действие woocommerce_before_single_product_summary который работает на одной странице продукта. Если ваша домашняя страница не отображается, это предполагает одно из следующих действий:

  1. Шаблон, который вы используете для домашней страницы, не использует цикл продукта по умолчанию WC
  2. Что как-то функция была удалена через remove_action()

Я бы порекомендовал проверить ваш продукт, чтобы увидеть, если он использует wc_get_template_part( 'content', 'product' ),

0

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

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

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