gpt4 book ai didi

woocommerce - 将缺货的产品变体变灰(WooCommerce)

转载 作者:行者123 更新时间:2023-12-05 09:21:49 30 4
gpt4 key购买 nike

[编辑:在 functions.php 中添加代码并省略代码 WC 文件中的更改时,它实际上起作用了。重要提示:它仅在 ONE 属性存在时有效。但是,当有 2 个属性(例如尺寸和颜色)时,它就不起作用了,因为它不再是关于缺货的变体,而是关于变体组合,事实上 WooCommerce 在这种常见情况下是完全无能为力的。请注意,目前似乎也没有可用的插件来解决这个非常明显的问题。太好了。]

自 2.0 以来,WooCommerce 要么隐藏缺货产品变体(这是一个明显的问题,因为客户无法知道它们的存在),要么将它们显示为有货变体(这也是一个问题,因为客户随后会系统地感到失望点击购买后发现变体缺货)。

This thread包括将缺货产品变体变灰的解决方案:

大概要添加到functions.php:

add_filter( 'woocommerce_variation_is_active', 'grey_out_variations_when_out_of_stock', 10, 3 );

function grey_out_variations_when_out_of_stock( $grey_out, $variation_id, $id ) {

$variation = get_product( $variation_id );

if ( ! $variation->is_in_stock() )
return false;

return true;
}

plugins/woocommerce/includes/class-wc-product-variation.php 中完成:

改变:

return apply_filters( 'woocommerce_variation_is_active', true, $this->variation_id, $this->id );

到:

return apply_filters( 'woocommerce_variation_is_active', true, $this );

同时改变:

return apply_filters( 'woocommerce_variation_is_visible', $visible, $this->variation_id, $this->id );

到:

return apply_filters( 'woocommerce_variation_is_visible', $visible, $this->variation_id, $this->id, $this );

然而,尽管据报道它有效,但在我的例子中,缺货版本的显示与其他版本相同,我也有警告:

Warning: Missing argument 3 for grey_out_variations_when_out_of_stock() in ...\functions.php on line 600

我做错了什么?

最佳答案

不要更改核心中的任何内容。

该错误告诉您您正在尝试调用 3 个变量作为函数的参数,但操作 Hook 仅传递 2 个,因此缺少第三个。这是因为您修改了 core 以删除第三个参数。

还要注意

   // Hide out of stock variations if 'Hide out of stock items from the catalog' is checked
if ( empty( $variation->variation_id ) || ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) && ! $variation->is_in_stock() ) ) {
continue;
}

可以在变量产品类中找到。如果在 WooCommerce 设置中设置了 woocommerce_hide_out_of_stock_items 选项,应该会自动处理此问题。

更新

我通读了您提到的 github 问题。 franticpsyx 所做的提交已被略微修改,因此 franticpsyx posted 的功能没有像他最初发布的那样工作,以及为什么你会遇到变量号错误。在 WooCommerce 源中 woocommerce_variation_is_active现在只有 2 个变量传递给它。

public function variation_is_active() {
return apply_filters( 'woocommerce_variation_is_active', true, $this );
}

因此我们需要修改代码以使用传递的变量:

add_filter( 'woocommerce_variation_is_active', 'grey_out_variations_when_out_of_stock', 10, 2 );

function grey_out_variations_when_out_of_stock( $grey_out, $variation ) {

if ( ! $variation->is_in_stock() )
return false;

return true;
}

这对我有用。我很确定在前端,这些项目是通过 Javascript 变灰的,因为在后端这样做需要大量的 mods 才能成为核心。

关于woocommerce - 将缺货的产品变体变灰(WooCommerce),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29879413/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com