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

确定WooCommerce中的产品类型-致命错误:对成员函数的调用为null上的_type()

韶弘壮
2023-03-14

我面临着这个问题。

致命错误:未捕获错误:对成员函数的调用为null上的_type()

有人能在这方面帮助我吗。

这是我使用的代码。

add_action( 'woocommerce_before_calculate_totals', 'sione_change_cart_item_name_and_price', 10, 1 );
function sione_change_cart_item_name_and_price( $cart ) {
    global $product;
    
    // Get new items names from WC_Session
    $session_data = (array) WC()->session->get( 'new_item_names' );
    //$sku_data = (array) WC()->session->get( 'product_sku' );
    // Loop through cart items
    foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
        
        
        if($product->is_type( 'simple' )) {
            $item_names = $product->get_short_description();
        } else {
            $item_names = $cart_item['data']->get_name() .", ". $cart_item['data']->get_attribute('color'). "," . $cart_item['data']->get_attribute('gender') . " (Product SKU: " . $cart_item['data']->get_sku() . ")";
        }
        // If item name doesn't exist in WC_Session for this cart item, we do it
        if( ! isset($session_data[$cart_item_key]) ) {
            $session_data[$cart_item_key] = $item_names;
            WC()->session->set( 'new_item_names', $session_data );
        }
    }
}

任何帮助都将不胜感激。谢谢

共有1个答案

车明贤
2023-03-14

您可以通过以下方式确定产品类型

function sione_change_cart_item_name_and_price( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    // Loop through cart items
    foreach ( $cart->get_cart() as $cart_item ) {

        // Get an instance of the WC_Product object
        $product = $cart_item['data'];

        // Get product id
        $product_id = $cart_item['product_id'];

        if( $product->is_type( 'simple' )) {
            echo 'Simple = ' . $product_id . '<br>';
        } else {
            echo 'Else = ' . $product_id . '<br>';          
        }
    }
}
add_action( 'woocommerce_before_calculate_totals', 'sione_change_cart_item_name_and_price', 10, 1 );
 类似资料:
  • 问题内容: 我正在尝试检查注册中是否已使用电子邮件。当我在学校工作时,它运行良好,但现在突然显示出一个错误: 致命错误:在null上调用成员函数prepare() 我用这个包括 在这里 问题答案: 编辑:( 我想通了)。 我终于弄清楚了为什么您的代码无法正常工作,而我原来的答案已不再适用,我已将其剔除掉。 连接不起作用的原因是因为您从连接参数中省略了常量。 即使您可能没有设置密码,也仍然需要将其作

  • 问题内容: 我不确定这里出了什么问题。我只是在线上学习教程,并且弹出了这些错误。 我收到以下错误 错误 码 问题答案: 首先,您在函数外声明了$ db。如果要在函数内部使用它,则应将其放在函数代码的开头: 我猜,当你写的时候: 您真正想要的是:

  • 问题内容: 我正在尝试访问类别及其内容的列表。我有一堂课叫做分类。我不断收到此错误。奇怪的是,到目前为止,我已经在另外两个地方使用了相同的完全相同的代码,没有任何问题。我在这里所做的只是重用代码并更改所有变量。 这是我班上的代码: 这是我尝试调用的代码: 问题答案: 看来您的变量未初始化。在您上传的代码中,我看不到它的初始化位置。 确保在调用类方法之前在中创建了一个新的PDO对象。(由于应在Cat

  • 代码: 代码2: 错误: 注意:未定义变量:第8行的connect in/home/user/domains/site.com/public_html/inc/nav/function-nav.php致命错误:在第8行的/home/designpr/domains/shrg.ir/public_html/inc/nav/function-nav.php中调用null上的成员函数prepare()

  • 我尝试了一些代码来使用PHP和slim框架构建RESTful API Web服务。(我正在使用高级Rest客户端测试此代码) 这是我的密码。

  • 我试图了解PDO的来龙去脉,但我却走进了这堵砖墙。 我目前的PDO课程如下: 我有其余的函数,但对于这个错误,我认为没有必要向您展示其余的函数。 然后我这样调用函数: 我得到了以下错误:致命错误:在null上调用成员函数准备(),当我调用准备函数时会发生这种情况。知道为什么会发生这种情况以及我如何解决这个问题吗?