首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免“调用成员函数get_cart()…”错误WooCommerce函数

避免“调用成员函数get_cart()…”错误WooCommerce函数
EN

Stack Overflow用户
提问于 2020-10-19 10:03:30
回答 1查看 2.3K关注 0票数 1

在以前确实工作过的代码上收到一个错误,但是现在它阻止我在wordpress中编辑一个页面(就像我试图编辑一个页面时,它说有一个严重的错误)。

下面的代码基本上改变了“添加到购物车”按钮的文本,这取决于相关产品是否在购物车中。

下面的代码和下面的错误异常:

代码语言:javascript
复制
function woocommerce_custom_add_to_cart_text($add_to_cart_text, $product ) {
    global $woocommerce;
    // Get cart
    $cart_items = $woocommerce->cart->get_cart();

    foreach ( $cart_items as $cart_item_key => $cart_item ) {
        // Get product id in cart
        $_product_id = $cart_item['product_id'];
 
        if ( $product->get_id() == $_product_id ) {
            $add_to_cart_text = 'Already in cart';
        }
    }

    return $add_to_cart_text;
  
}
add_filter( 'woocommerce_product_add_to_cart_text', 'woocommerce_custom_add_to_cart_text', 10, 2 );

错误异常:

代码语言:javascript
复制
An error of type E_ERROR was caused in line 3 of the file /home4/metisonl/public_html/staging/4326/wp-content/plugins/code-snippets/php/snippet-ops.php(446) : eval()'d code. Error message: Uncaught Error: Call to a member function get_cart() on null in /home4/metisonl/public_html/staging/4326/wp-content/plugins/code-snippets/php/snippet-ops.php(446) : eval()'d code:3
Stack trace:
#0 /home4/metisonl/public_html/staging/4326/wp-includes/class-wp-hook.php(287): woocommerce_custom_add_to_cart_text('Add to cart', Object(WC_Product_Simple))
#1 /home4/metisonl/public_html/staging/4326/wp-includes/plugin.php(206): WP_Hook->apply_filters('Add to cart', Array)
#2 /home4/metisonl/public_html/staging/4326/wp-content/plugins/woocommerce/includes/class-wc-product-simple.php(62): apply_filters('woocommerce_pro...', 'Add to cart', Object(WC_Product_Simple))
#3 /home4/metisonl/public_html/staging/4326/wp-content/plugins/woo-gutenberg-products-block/src/BlockTypes/AbstractProductGrid.php(473): WC_Product_Simple->add_to_cart_text()
#4 /home4/metisonl/public_html/staging/4326/wp-content/plugins/woo-gutenberg-products-block/src/BlockTypes/AbstractProductGrid.php(446): Automattic\WooCommerce\Blocks\BlockTypes\Abstra
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-19 10:06:14

更新的…您需要检查cart对象是否存在且购物车不为空,因此请尝试以下操作以避免此类错误:

代码语言:javascript
复制
add_filter( 'woocommerce_product_add_to_cart_text', 'filter_product_add_to_cart_text', 10, 2 );
function filter_product_add_to_cart_text( $add_to_cart_text, $product ) {
    if ( ! WC()->cart && WC()->cart->is_empty() ) 
        return $add_to_cart_text;

    // Loop through cart items
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        // Get product id in cart
        $_product_id = $cart_item['product_id'];
 
        if ( $product->get_id() == $_product_id ) {
            return __('Already in cart');
        }
    }
    return $add_to_cart_text;
}

代码位于活动子主题(或活动主题)的functions.php文件中。测试和工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64425146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档