【问题标题】:Changing WooCommerce out of stock badge text更改 WooCommerce 缺货徽章文本
【发布时间】:2013-10-20 05:59:46
【问题描述】:

我们在 Wordpress 和 Woo Commerce 上使用 Neighborhood 主题来销售一次性的独特商品。库存管理在确保不再购买已售出的产品方面效果很好,而是将商品显示为缺货。原则上这很好,事实上,在项目描述的价格下显示“有货”变成“缺货”没有问题,我们甚至找到了代码来更改显示,如有必要here。这工作正常 - 将以下代码添加到主题中的 functions.php:

add_filter('woocommerce_stock_html', 'change_stock_message', 10, 2);
function change_stock_message($message, $stock_status) {
    if ($stock_status == "Out of stock") {
        $message = '<p class="stock out-of-stock">Sold</p>';    
    } else {
        $message = '<p class="stock in-stock">Available</p>';           
    }
    return $message;
}

但是,我们真正想做的是更改出现在图像上的缺货徽章中的文本,例如http://neighborhood.swiftideas.net/product/common-projects-achilles/。

更改 CSS 没有问题,因此文本字体、背景、大小等很容易更改,将类似这样的内容添加到 custom-css:

.out-of-stock-badge {
    background: red;
    font-size: 12px;
}

如何将缺货徽章文本从“缺货”更改为“已售出”?

【问题讨论】:

  • @brasofilo 来自第一个链接的代码已经添加。第二个链接是我没有代码/快照的示例(因此请求)。如果有帮助,请添加屏幕抓取(尽管我只能链接图像,因为我没有足够的代表:()。感谢您的评论!

标签: php wordpress woocommerce


【解决方案1】:

2019 年 3 月您需要的 sn-p 位于名为 wc-product-loop-outofstock-flash.php 的文件中(在我的情况下为 wp-content/Themes/Avada/woocommerce)

<?php if ( ! $product->is_in_stock() ) : ?>
    <div class="fusion-out-of-stock">
        <div class="fusion-position-text">
        <?php esc_attr_e( 'Fully Booked', 'Avada' ); ?>
        </div>
     </div>
<?php
endif;

查看结果here,但我不能保证它们会在 2019 年 5 月之后出现 已预订的商品位于页面底部

【讨论】:

  • 您能找到一种方法以不会过期的方式提供“结果”吗?也许,您可以将一个屏幕截图作为图像包含在您的答案中? (谢谢)
【解决方案2】:

我不知道您使用的主题。但我认为下面的代码可能会解决你的问题-

add_filter('woocommerce_sale_flash', 'woocommerce_sale_flashmessage', 10, 2);
function woocommerce_sale_flashmessage($flash){
    global $product;
    $availability = $product->get_availability();

    if ($availability['availability'] == 'Out of stock') :
        $flash = '<span class="out-of-stock-badge">'.__( 'SOLD', 'woocommerce' ).'</span>';

    endif;
    return $flash;
}

将此添加到您主题的 functions.php 文件中。

【讨论】:

  • 嗨@maksbd19 感谢您的回复。不幸的是,当添加到functions.php 时,我无法让它工作。我原则上理解这应该如何工作,但缺货徽章仍然显示缺货!
  • 我之前发现该文本可能来自 woocommerce 模板页面 sale-flash.php 文件。这可能在neighborhood\woocommerce\single-product 目录的位置。如果它在那里,那么您可以尝试在那里更改文本。在没有实际环境的情况下尝试解决模板问题真的很困难。
  • 感谢@maksbd19,您的建议使我能够发现我需要更改哪些文件,这些文件已包含在下面的答案中。
【解决方案3】:

根据@maksbd19 的建议,我在主题文件夹(在本例中为邻域)内的 woocommerce 文件夹中找到了需要编辑的两个文件。它们是 content-product.php 和 single-product\product-image.php。在这两种情况下,我将以下行从“Out of Stock”更改为“Sold”,如下所示:

...} else if (is_out_of_stock()) {
    echo '<span class="out-of-stock-badge">' . __( 'Sold', 'swiftframework' ) . '</span>';
} else if (!$product->get_price()) {...

希望对某人有所帮助。

【讨论】:

    【解决方案4】:

    您可以使用子主题 header.php 文件中的代码

    创建子主题 - https://codex.wordpress.org/Child_Themes

    jQuery( document ).ready(function() {
        jQuery(".onsale.oos").text(function () {
            return jQuery(this).text().replace("Out of stock", "SOLD"); 
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2019-02-10
      • 1970-01-01
      • 2015-05-12
      • 2015-06-03
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多