Неустранимая ошибка: Uncaught Ошибка: вызов функции-члена is_type () на ноль - PullRequest
1 голос
/ 14 апреля 2020

Я столкнулся с этой проблемой.

Неустранимая ошибка: необученная ошибка: вызов функции-члена is_type () для null

Поможет ли кто-нибудь мне в этом вопросе.

Вот код, который я использую.

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 Ответ

2 голосов
/ 14 апреля 2020

Вы можете определить тип продукта следующим образом

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 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...