} $node = $resp['productVariantsBulkCreate'] ?? []; $errs = $node['userErrors'] ?? []; return [ 'label' => $label, 'ok' => empty($errs), 'userErrors' => $errs, 'created' => $node['productVariants'] ?? [], 'sentCount' => count($variants), ]; }; // Construir variantes para cada forma $attempts = []; $success = null; // 1) optionN_fields (option1/2/3) $variants_optionN = []; foreach ($baseVariantInputs as $v) { if (empty($v['options'])) continue; $out = ['price' => $v['price'] ?? null]; foreach ($v['options'] as $i => $val) { if ($val === null || $val === '') continue; if ($i < 3) { $out['option'.($i+1)] = $val; } } $variants_optionN[] = $out; } if ($variants_optionN) { $r = $run('optionN_fields', $variants_optionN); $attempts[] = $r; if ($r['ok']) $success = $r; } // 2) selectedOptions (array name/value) if (!$success && $optionNames) { $variants_selectedOptions = []; foreach ($baseVariantInputs as $v) { if (empty($v['options'])) continue; $sel = []; foreach ($v['options'] as $i => $val) { if (!isset($optionNames[$i])) continue; $sel[] = ['name' => mb_strtolower($optionNames[$i]), 'value' => $val]; } if ($sel) { $variants_selectedOptions[] = [ 'price' => $v['price'] ?? null, 'selectedOptions' => $sel ]; } } if ($variants_selectedOptions) { $r = $run('selectedOptions', $variants_selectedOptions); $attempts[] = $r; if ($r['ok']) $success = $r; } } // 3) optionValues name+value if (!$success && $optionNames) { $variants_optionValues = []; foreach ($baseVariantInputs as $v) { if (empty($v['options'])) continue; $ov = []; foreach ($v['options'] as $i => $val) { if (!isset($optionNames[$i])) continue; $ov[] = ['name' => mb_strtolower($optionNames[$i]), 'value' => $val]; } if ($ov) { $variants_optionValues[] = [ 'price' => $v['price'] ?? null, 'optionValues' => $ov ]; } } if ($variants_optionValues) { $r = $run('optionValues_name_value', $variants_optionValues); $attempts[] = $r; if ($r['ok']) $success = $r; } } // 4) optionValues name+optionValue if (!$success && $optionNames) { $variants_optionValues2 = []; foreach ($baseVariantInputs as $v) { if (empty($v['options'])) continue; $ov = []; foreach ($v['options'] as $i => $val) { if (!isset($optionNames[$i])) continue; $ov[] = ['name' => mb_strtolower($optionNames[$i]), 'optionValue' => $val]; } if ($ov) { $variants_optionValues2[] = [ 'price' => $v['price'] ?? null, 'optionValues' => $ov ]; } } if ($variants_optionValues2) { $r = $run('optionValues_name_optionValue', $variants_optionValues2); $attempts[] = $r; if ($r['ok']) $success = $r; } } // 5) optionValues solo name if (!$success && $optionNames) { $variants_optionValues3 = []; foreach ($baseVariantInputs as $v) { if (empty($v['options'])) continue; $ov = []; foreach ($v['options'] as $i => $val) { if (!isset($optionNames[$i])) continue; $ov[] = ['name' => mb_strtolower($optionNames[$i])]; } if ($ov) { $variants_optionValues3[] = [ 'price' => $v['price'] ?? null, 'optionValues' => $ov ]; } } if ($variants_optionValues3) { $r = $run('optionValues_name_only', $variants_optionValues3); $attempts[] = $r; if ($r['ok']) $success = $r; } } // 6) NUEVO: optionValues optionName + name if (!$success && $optionNames) { $variants_optionValues4 = []; foreach ($baseVariantInputs as $v) { if (empty($v['options'])) continue; $ov = []; foreach ($v['options'] as $i => $val) { if (!isset($optionNames[$i])) continue; if ($val === '—' || $val === '' || $val === null) continue; // omitir placeholder $ov[] = ['optionName' => $optionNames[$i], 'name' => $val]; } if ($ov) { $variants_optionValues4[] = [ 'price' => $v['price'] ?? null, 'optionValues' => $ov ]; } } if ($variants_optionValues4) { $r = $run('optionValues_optionName_name', $variants_optionValues4); $attempts[] = $r; if ($r['ok']) $success = $r; } } return [ 'success' => $success, 'attempts' => $attempts, ]; } // (El bloque duplicado de resultados fue limpiado arriba) // (Bloque antiguo eliminado; la versión simplificada del handler ya está definida más arriba.) ?> TIMBERLAND → NEXUS

Menú