WordPress

tworzenie wtyczek — podczas aktualizacji wersji produktu zgłaszany jest błąd: Błąd: wywołanie funkcji elementu członkowskiego get_parent_id(). Czego mi brakuje?

  • 17 marca, 2023
  • 3 min read
tworzenie wtyczek — podczas aktualizacji wersji produktu zgłaszany jest błąd: Błąd: wywołanie funkcji elementu członkowskiego get_parent_id(). Czego mi brakuje?


Tak więc za pomocą tego kodu próbuję zaktualizować lub utworzyć odmianę produktu. Jeśli jednak odmiana już istnieje, kod po prostu ją zapisze.

Ale dostaję błąd:

Błąd krytyczny: nieprzechwycony błąd: wywołanie funkcji członka get_parent_id() na bool w /Users/georginyagolov/Local Sites/kensol/app/public/wp-content/plugins/woo-variation-swatches/includes/class-woo-variation -swatches-manage-cache.php:185 Ślad stosu: #0 /Users/georginyagolov/Local Sites/kensol/app/public/wp-includes/class-wp-hook.php(310): Woo_Variation_Swatches_Manage_Cache->clear_cache_on_product_modify(11394 ) #1 /Users/georginyagolov/Local Sites/kensol/app/public/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters(”, Array) #2 /Users/georginyagolov/Local Sites/kensol/app/public/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #3 /Users/georginyagolov/Local Sites/kensol/app/public/wp-content/plugins/woocommerce/ zawiera/data-stores/class-wc-product-variation-data-store-cpt.php(274): do_action(’woocommerce_upd…’, 11394, Object(WC_Product_Variation)) #4 /Users/georginyagolov/Local Sites /kensol/app/public/wp-content/plugins/woocommerce/includes/class-wc-data-store.php(196): WC_Product_Variation_Data_Store_CPT->update(Object(WC_Product_Variation)) #5 /Users/georginyagolov/Local Sites/kensol/app/public/wp-content/plugins/woocommerce/includes/abstracts/abstract-wc-product.php(1428): WC_Data_Store ->update(Object(WC_Product_Variation)) #6 /Users/georginyagolov/Local Sites/kensol/app/public/wp-content/themes/astra-child/App/SyncProductsPrices.php(51): WC_Product->save() #7 /Users/georginyagolov/Local Sites/kensol/app/public/wp-content/themes/astra-child/functions.php(39): App\SyncProductsPrices->updatePrices() #8 /Users/georginyagolov/Local Sites /kensol/app/public/wp-settings.php(585): include(’/Users/georginy…’) #9 /Users/georginyagolov/Local Sites/kensol/app/public/wp-config.php( 105): require_once(’/Users/georginy…’) #10 /Users/georginyagolov/Local Sites/kensol/app/public/wp-load.php(50): require_once(’/Users/georginy… ’) #11 /Users/georginyagolov/Local Sites/kensol/app/public/wp-admin/admin.php(34): require_once(’/Users/georginy…’) #12 /Users/georgin yagolov/Local Sites/kensol/app/public/wp-admin/post.php(12): require_once(’/Users/georginy…’) #13 {main} wrzucony do /Users/georginyagolov/Local Sites/kensol /app/public/wp-content/plugins/woo-variation-swatches/includes/class-woo-variation-swatches-manage-cache.php w linii 185

Więc nie rozumiem, czego mi brakuje?

Mój kod:

foreach ($product_data['variables'] as $key => $variable) {
            $variation_id = wc_get_product_id_by_sku($variable['id']);
            if ($variation_id) {
                $variation = new WC_Product_Variation($variation_id);
             }else{
                $variation = new WC_Product_Variation();
                $variation->set_parent_id($product_id);
                $variation->set_sku($variable['id']);
             }
                $variation->set_manage_stock(true);
                $variation->set_regular_price(0);
                $variation->set_stock_quantity(0);

                $attributes_terms = array();

                if (key_exists('color', $variable)) {
                    $term = get_term_by('name', $variable['color'], 'pa_color');
                    $attributes_terms['pa_color'] = $term->slug;
                }

                if (key_exists('size', $variable)) {
                    $term = get_term_by('name', $variable['size'], 'pa_size');
                    $attributes_terms['pa_size'] = $term->slug;
                }

                $variation->set_attributes($attributes_terms);
                $variation->update_meta_data('_default_attributes', $attributes_terms);


                $variation->save();
            }
            wp_set_object_terms($product_id, 'variable', 'product_type');
        }


Źródło

Warto przeczytać!  Co warto wiedzieć o WordPress Playground – Wiadomości WordPress