更改WooCommerce上的“库存”文字

时间:2014-03-06 18:26:40

标签: php wordpress woocommerce

目前,在单个产品页面上,库存文本显示为“#in stock”。

我想稍微改变一下代码,但还没有找到解决方案。我无法找到该代码行的确切文件。 price.php似乎有这个

<link itemprop="availability" href="http://schema.org/<?php echo $product->is_in_stock() ? 'InStock' : 'OutOfStock'; ?>" />

但它没有做任何事情。当我检查元素时,该类被称为“股票”。

我尝试了这段代码来添加functions.php:

add_filter( 'woocommerce_get_availability', 'custom_get_availability', 1, 2);

function custom_get_availability( $availability, $_product ) {
    //change text "In Stock' to 'SPECIAL ORDER'
    if ( $_product->is_in_stock() ) $availability['availability'] = __('SPOTS LEFT', 'woocommerce');

    //change text "Out of Stock' to 'SOLD OUT'
    if ( !$_product->is_in_stock() ) $availability['availability'] = __('SOLD OUT', 'woocommerce');
        return $availability;
    }

但是,我希望能够改变一下。我想在'SPOTS LEFT'前添加库存数量,但我不知道放在哪里。似乎php不能进入('')。

我试过了:

<?php echo $product->get_stock_quantity(); ?>

我想再提高一个档次,实际上只有当数量小于6时才有数字点留下的状态。否则,州售罄。超过5个点的任何东西都不会显示。 我不确定具体的语法是什么!任何建议都会很棒。

2 个答案:

答案 0 :(得分:2)

// WooCommerce Stock message
add_filter( 'woocommerce_get_availability', 'mw_get_availability', 1, 2 );

function mw_get_availability( $availability, $_product ) {

//change text "In Stock' to 'SPECIAL ORDER'
global $product;
if ( $_product->is_in_stock() && $product->get_stock_quantity() < 6 ) $availability['availability'] = $product->get_stock_quantity().' '.__('SPOTS LEFT', 'woocommerce');

//change text "Out of Stock' to 'SOLD OUT'
if ( !$_product->is_in_stock() ) $availability['availability'] = __('SOLD OUT', 'woocommerce');

return $availability;

}

答案 1 :(得分:0)

这是对SotirisK答案的轻微扩展,它解释了在未选择管理股票期权时更改消息。

// WooCommerce Stock message

add_filter( 'woocommerce_get_availability', 'mw_get_availability', 1, 2 );

function mw_get_availability( $availability, $_product ) {

    global $product;

    // change text "In Stock' to 'SPECIAL ORDER' when quantity more than 6
    if ( $_product->is_in_stock() && $product->get_stock_quantity() > 6 ) $availability['availability'] = $product->get_stock_quantity().' '.__('Special Order', 'woocommerce');

    // change text to n Spots Left, where n is the quantity
    if ( $_product->is_in_stock() && $product->get_stock_quantity() <= 6 ) $availability['availability'] = $product->get_stock_quantity() . __(' Spots Left);

    // change text "Out of Stock' to 'SOLD OUT'
    if ( !$_product->is_in_stock() ) $availability['availability'] = __('SOLD OUT', 'woocommerce');

    // change text "In Stock' to 'Special Order' for products with unmanaged stock
    if ( !$_product->managing_stock() && $_product->is_in_stock() ) $availability['availability'] = __('In Stock', 'woocommerce');

    return $availability;
}