在目录视图Woocommerce上显示“缺货”

时间:2014-09-27 09:26:31

标签: php css wordpress woocommerce

经过数小时的研究后,我无法将其付诸实践。我希望有一个人可以帮助我。

在woocommerce中,缺货消息仅显示在单个产品页面上,而不显示在目录页面上。这意味着有人首先必须点击该产品才能发现它已售罄。游民。因为我们销售独特的产品,所以展示缺货产品对我们来说非常重要。 "缺货"通知必须直接在产品图片下可见。

渴望解决方案:)

亲切的问候,

Roos

5 个答案:

答案 0 :(得分:4)

2017年,此代码段将有效:

<div ng-click="onAccordionClick(p[0], visitCompare[p[0]])">

答案 1 :(得分:2)

我知道它已经有一段时间但我只是想做同样的事情,并注意到循环中的li元素有两个类。

<li class="first ... outofstock">

VS

<li class="first ... instock">

如果它只是你要改变的标记,可能只是做CSS并且不要仅仅为了消息而挂钩到woocommerce。

答案 2 :(得分:1)

最简单的方法是使用css:

目录中的每个产品都有一个&lt; li>标签。如果产品有库存,它将具有此类“instock”如果它没有库存,它将具有此类“outofstock”

所以你可以创建这个css:

.outofstock:before{
    content: url(http://image.png);
    position: absolute !important;
    top: 9px;
    left: 7px !important;
    text-align: center;
    z-index: 9999999;
}

请记得将image.png网址替换为您的网址。

答案 3 :(得分:0)

找到此代码段here。在我的网站上完美地工作。

//add action give it the name of our function to run
add_action( 'woocommerce_after_shop_loop_item_title', 'wcs_stock_text_shop_page', 25 );

//create our function
function wcs_stock_text_shop_page() {

//returns an array with 2 items availability and class for CSS
global $product;
$availability = $product->get_availability();

//check if availability in the array = string 'Out of Stock'
//if so display on page.//if you want to display the 'in stock' messages as well just leave out this, == 'Out of stock'
if ( $availability['availability'] == 'Out of stock') {
    echo apply_filters( 'woocommerce_stock_html', '<p class="stock ' . esc_attr( $availability['class'] ) . '">' . esc_html( $availability['availability'] ) . '</p>', $availability['availability'] );
}

}

答案 4 :(得分:0)

@yuvalsab,一个不错的;) 这是在2020年进行的工作

=====================

add_action( 'woocommerce_after_shop_loop_item_title', 'talbiconsept_wc_template_loop_stock', 10 );

function talbiconsept_wc_template_loop_stock() {
    global $product;
    if($product->managing_stock() && (int)$product->get_stock_quantity() < 1)
    echo '<p class="stock out-of-stock">'.__('Out of Stock').'</p>';
}