使用 "woocommerce_product_get_stock_quantity" 过滤器挂钩时出现问题

Issue when using "woocommerce_product_get_stock_quantity" filter hook

我想把单品页面的库存数量替换为“5+”,如果库存数量大于5,则显示原数量。

我试过如下修改钩子

add_filter( 'woocommerce_product_get_stock_quantity' ,'custom_get_stock_quantity', 10, 2 );
add_filter( 'woocommerce_product_variation_get_stock_quantity' ,'custom_get_stock_quantity', 10, 2 );
function custom_get_stock_quantity( $value, $_product ) {
    global $product;

    if($_product->get_stock_quantity() > 5){
     return "5+";
    }
    else{
        return $_product->get_stock_quantity();
    }
}

这给我 502 服务器错误。这可能是什么问题?

错误是由多种原因造成的

  • Hook 已弃用
  • 你的回调函数只有returns一个数字:5,不是一个字符串:"5+"
  • 通过使用 $_product->get_stock_quantity() 你创建了一个无限循环,因为这个函数调用了 hook

因此,为了满足您的需求,您必须采用不同的方法。例如通过使用 woocommerce_get_availability_text 挂钩

所以你得到:

// Availability text
function filter_woocommerce_get_availability_text( $availability, $product ) {
    if ( $product->get_stock_quantity() > 5 ) {
        $availability = '+5';
    }

    return $availability; 
}
add_filter( 'woocommerce_get_availability_text', 'filter_woocommerce_get_availability_text', 10, 2 );