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');
}