get_variants((int) $post->ID); } if (!$variants) { $variants = [[ 'sku' => '', 'attributes' => [], 'price' => 0, 'stock' => 0, 'image' => '', ]]; } ?>
post_type !== 'aksrt_product' || !current_user_can('edit_post', $post_id)) { return; } if (!class_exists('AKSRT_Shop')) { return; } $skus = isset($_POST['aksrt_variant_sku']) && is_array($_POST['aksrt_variant_sku']) ? wp_unslash($_POST['aksrt_variant_sku']) : []; $attrs = isset($_POST['aksrt_variant_attrs']) && is_array($_POST['aksrt_variant_attrs']) ? wp_unslash($_POST['aksrt_variant_attrs']) : []; $prices = isset($_POST['aksrt_variant_price']) && is_array($_POST['aksrt_variant_price']) ? wp_unslash($_POST['aksrt_variant_price']) : []; $stocks = isset($_POST['aksrt_variant_stock']) && is_array($_POST['aksrt_variant_stock']) ? wp_unslash($_POST['aksrt_variant_stock']) : []; $images = isset($_POST['aksrt_variant_image']) && is_array($_POST['aksrt_variant_image']) ? wp_unslash($_POST['aksrt_variant_image']) : []; $variants = []; $count = max(count($skus), count($attrs), count($prices), count($stocks), count($images)); for ($i = 0; $i < $count; $i++) { $sku = sanitize_text_field((string) ($skus[$i] ?? '')); $attr_raw = sanitize_text_field((string) ($attrs[$i] ?? '')); $price = max(0, (float) ($prices[$i] ?? 0)); $stock = max(0, (int) ($stocks[$i] ?? 0)); $image = esc_url_raw((string) ($images[$i] ?? '')); if ($sku === '' && $attr_raw === '' && $price <= 0 && $stock <= 0 && $image === '') { continue; } $attributes = []; if ($attr_raw !== '') { foreach (preg_split('/\s*;\s*/', $attr_raw) ?: [] as $pair) { if ($pair === '' || !str_contains($pair, ':')) { continue; } [$k, $v] = array_map('trim', explode(':', $pair, 2)); if ($k !== '') { $attributes[$k] = $v; } } } $variants[] = [ 'sku' => $sku, 'attributes' => $attributes, 'price' => $price, 'stock' => $stock, 'image' => $image, ]; } AKSRT_Shop::get_instance()->save_variants($post_id, $variants); } }