【问题标题】:Change product stock availability texts in Woocommerce在 Woocommerce 中更改产品库存可用性文本
【发布时间】:2019-03-29 03:32:09
【问题描述】:

我正在尝试更改 woocommerce 中可用数量旁边的库存文本。我在产品变体中使用库存管理。

我在下面尝试了这段代码:

// change stock text
add_filter( 'woocommerce_get_availability', 'wcs_custom_get_availability', 1, 2);
function wcs_custom_get_availability( $availability, $variation ) {

    // Change In Stock Text
    if (  $variation->is_in_stock() ) {
        $availability['availability'] = __('Available!', 'woocommerce');
    }

    // Change Out of Stock Text
    if ( ! $variation->is_in_stock() ) {
        echo '-------------------------';
        echo __('Sold Out', 'woocommerce');
        $availability['availability'] = __('Sold Out', 'woocommerce');
    }

    return $availability;
}

上面的代码更改了文本,但它没有从变体库存管理器中提取库存数量。

感谢任何帮助。

【问题讨论】:

标签: php wordpress woocommerce product variations


【解决方案1】:

以下代码将处理所有情况,包括使用您的自定义文本显示库存数量:

add_filter( 'woocommerce_get_availability_text', 'customizing_stock_availability_text', 1, 2);
function customizing_stock_availability_text( $availability, $product ) {
    if ( ! $product->is_in_stock() ) {
        $availability = __( 'Sold Out', 'woocommerce' );
    }
    elseif ( $product->managing_stock() && $product->is_on_backorder( 1 ) )
    {
        $availability = $product->backorders_require_notification() ? __( 'Available on backorder', 'woocommerce' ) : '';
    }
    elseif ( $product->managing_stock() )
    {
        $availability = __( 'Available!', 'woocommerce' );
        $stock_amount = $product->get_stock_quantity();

        switch ( get_option( 'woocommerce_stock_format' ) ) {
            case 'low_amount' :
                if ( $stock_amount <= get_option( 'woocommerce_notify_low_stock_amount' ) ) {
                    /* translators: %s: stock amount */
                    $availability = sprintf( __( 'Only %s Available!', 'woocommerce' ), wc_format_stock_quantity_for_display( $stock_amount, $product ) );
                }
            break;
            case '' :
                /* translators: %s: stock amount */
                $availability = sprintf( __( '%s Available!', 'woocommerce' ), wc_format_stock_quantity_for_display( $stock_amount, $product ) );
            break;
        }

        if ( $product->backorders_allowed() && $product->backorders_require_notification() ) {
            $availability .= ' ' . __( '(can be backordered)', 'woocommerce' );
        }
    }
    else
    {
        $availability = '';
    }

    return $availability;
}

代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

【讨论】:

  • 感谢您对其他问题的帮助。你知道我怎样才能让变化的细节显示在客户的收据上吗?
  • 对我来说,这不适用于“缺货”。它确实到达了文本设置为“Sold Out”的行,但是在输出中,旧的“Out of stock”仍然存在……还有其他地方可以覆盖吗?编辑:知道了:在我的网站上,这是一个主题设置!
猜你喜欢
  • 2019-07-31
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
  • 1970-01-01
  • 1970-01-01
  • 2020-11-07
相关资源
最近更新 更多