当前位置: 首页 > 知识库问答 >
问题:

使用woocommerce_get_availability钩子时的几个问题

董子航
2023-03-14

我试图在缺货产品的单一产品页面上显示“缺货信息”。

我在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-包括/template-loader.php'),包括('/plugins/wooCommerce/模板/single-product.php'),wc_get_template_part,load_template,要求('/主题/myTh律/wooCommerce/content-single-product.php'),do_action('woocommerce_single_product_summary'),WP_Hook-

有没有办法解决这个问题?

共有2个答案

冯永长
2023-03-14

需要使用“获取库存数量”方法


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

邢焕
2023-03-14

您的代码包含的不是1个错误,而是多个错误

  • woocommerce_get_availability不是一个动作而是一个过滤器钩子
  • number_format()在这里根本不适用
  • $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 );

 类似资料:
  • contentFor钩子方法 范围:这是一个插件的钩子方法。 用途:该方法可以在构建时被调用,直接在content-for标签的地方插入需要的内容。如果不是开发插件的话,就直接忽略他们就行了 描述:在默认生成的app/index.html里,有几处用到content-for标签,类似于{{content-for 'head'}}、{{content-for 'body'}},它们需要等待某个插件的

  • 本文向大家介绍第一次加载页面时会触发哪几个钩子?相关面试题,主要包含被问及第一次加载页面时会触发哪几个钩子?时的应答技巧和注意事项,需要的朋友参考一下 beforeCreate, created, beforeMount, mounted

  • 我第一次面对的问题很小。我试图使用一个简单的useState,但出于某种原因,我不明白为什么React会给我一个错误,不管我想做什么--没有什么能修复它。 这是错误的图像:错误描述: 错误:无效的钩子调用。钩子只能在函数组件的主体内部调用。这可能是由于以下原因之一:1.React和呈现器(例如React DOM)2的版本可能不匹配。你可能违反了钩子3的规则。在同一个应用程序中可能有多个React副

  • 如果我们在提交配置清单之前能够发现其中的语法错误将会是个好消息。 检查 Puppet 配置清单的语法可以使用 puppet parser validate 命令: # puppet parser validate /etc/puppet/manifests/site.pp err: Could not parse for environment production: Syntax error a

  • 我有一个组件,我在其中调用我的自定义钩子。 自定义钩子如下所示: 而我在其中使用的导致错误的组件是: 有什么想法吗?

  • 我想使用wordpress在我的网站上添加变体 我尝试了很多插件,但它们不能满足我的要求。 要求: 我想根据给定的变化变化价格: 任何人都可以引用插件或函数?