我试图在单一产品页面上显示缺货商品的“缺货信息”。
我的functions.php中有这段代码
function stock_catalog() {
global $product;
if (number_format($product->stock, 0, '', '') <= 0) {
echo '<p class="mb-2"> ' . __('** Sorry currently out of stock **', 'text-
domain') . '</p>';
}
}
add_action('woocommerce_get_availability', 'stock_catalog');我得到以下错误:
注意:股票被错误地调用。不应直接访问产品属性。回溯:要求(‘WP-blog-Header.php’),require_once('wp-includes/template-loader.php'),include('/plugins/woocommerce/templates/single-product.php'),wc_get_template_part,load_template,require('/themes/mytheme/woocommerce/content-single-product.php'),do_action('woocommerce_single_product_summary'),WP_Hook->do_action,WP_Hook->apply_filters,woocommerce_template_single_add_to_cart,include('/plugins/woocommerce/templates/single-product/add-to-cart/simple.php'),_ do_action('woocommerce_simple_add_to_cart'),WP_Hook->do_action,WP_Hook->apply_filters,woocommerce_simple_add_to_cart,wc_get_template,wc_get_stock_html,WC_Product>get_availability,apply_filters('woocommerce_get_availability'),WP_Hook->apply_filters,stock_catalog,WC_抽象_Legacy_Product>_get,关于/homepages/17/d825330075/htdocs/mytheme/wp-includes/functions.php第5313行的更多信息,请参见WordPress中的调试。
有什么办法解决这个问题吗?
发布于 2021-09-09 11:09:52
需要使用"get_stock_quantity“方法
function stock_catalog($availability, $product) {
if ( $product->managing_stock() && $product->get_stock_quantity() <= 0) {
$availability['availability'] = __('** Sorry currently out of stock **', 'text-
domain');
}
return $availability;
}
add_filter('woocommerce_get_availability', 'stock_catalog', 10, 2);更多细节https://woocommerce.github.io/code-reference/classes/WC-Product.html#method_get_stock_quantity
发布于 2021-09-09 11:13:03
您的代码包含的错误不是1,而是几个错误,
woocommerce_get_availability是不是一个动作,但是过滤器hooknumber_format()在这里不适用于all$product->stock 需要替换为 $product->get_stock_quantity()managing_stock()必须为真,否则不可能设置/存储产品库存quantity$availability$product 作为参数传递给函数,因此,不需要使用全局变量。
所以你得到了:
// Change stock text
function filter_woocommerce_get_availability( $availability, $product ) {
// Managing stock is activated
if ( $product->managing_stock() ) {
// Stock quantity
$stock_quantity = $product->get_stock_quantity();
// Stock quantity is less than or equal to 0
if ( $stock_quantity <= 0 ) {
$availability['availability'] = __( 'Sorry currently out of stock', 'woocommerce' );
}
}
return $availability;
}
add_filter( 'woocommerce_get_availability', 'filter_woocommerce_get_availability', 10, 2 );https://stackoverflow.com/questions/69116992
复制相似问题