Bir eticaret sitesinden woocommerce'e ürün aktarımı yaptık ve renk varyantları da vardı. Kaynak sitede(ideasoft) renk varyantları ufak png resimler haline getirilmiş. Bu png resimleri yapay zekaya gönderip renk kodlarını alabilirdik veya php ile de bu renk kodlarını okuyabilirdik. Ancak biz bunun yerine tüm ürünleri çektikten sonra toplu olarak yapmaya karar verdik. Renkleri nitelik ve varyant olarak ayarladık. Ardından renk niteliği için eklenen terimleri yapay zekaya gönderip, renklerin rgb kodlarını ve slug halini içeren bir php array yapmasını istedim.
Tüm renkleri aşağıdaki formatta rgb kodlarını aldık.
$colors = [
[
'name' => 'Abyss Green',
'slug' => 'abyss-green',
'rgb' => '0, 48, 36'
],
[
'name' => 'Active Black',
'slug' => 'active-black',
'rgb' => '33, 33, 33'
]
];Ardından aşağıdaki php kodu ile renkleri veritabanından bulup, rgb kodlarını da wp_termmeta tablosuna ekledik. Veritabanı bilgilerinizi değiştirerek işlemi yapabilirsiniz.// Veritabanı bağlantı bilgileri
$db_host = 'localhost';
$db_name = '';
$db_user = '';
$db_pass = '';
$colors = [
[
'name' => 'Abyss Green',
'slug' => 'abyss-green',
'rgb' => '0, 48, 36'
],
[
'name' => 'Active Black',
'slug' => 'active-black',
'rgb' => '33, 33, 33'
]
];
try {
// PDO bağlantısı oluştur
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("SET NAMES utf8");
echo "<h2>Renk RGB Kodları Ekleniyor</h2>";
echo "<table border='1'>
<tr>
<th>Renk İsmi</th>
<th>Slug</th>
<th>RGB Kodu</th>
<th>Term ID</th>
<th>Durum</th>
</tr>";
// Her renk için işlem yap
foreach ($colors as $color) {
// Renk slugına göre term_id'yi bul
$stmt = $pdo->prepare("
SELECT term_id
FROM wp_terms
WHERE slug = ?
");
$stmt->execute([$color['slug']]);
$term = $stmt->fetch(PDO::FETCH_ASSOC);
$status = "";
if ($term) {
$term_id = $term['term_id'];
// Meta değerinin zaten var olup olmadığını kontrol et
$check_stmt = $pdo->prepare("
SELECT meta_id
FROM wp_termmeta
WHERE term_id = ? AND meta_key = 'color'
");
$check_stmt->execute([$term_id]);
$exists = $check_stmt->fetch(PDO::FETCH_ASSOC);
// RGB kodunu formatlı şekilde oluştur
$rgb_formatted = "rgb({$color['rgb']})";
if ($exists) {
// Varsa güncelle
$update_stmt = $pdo->prepare("
UPDATE wp_termmeta
SET meta_value = ?
WHERE term_id = ? AND meta_key = 'color'
");
$update_stmt->execute([$rgb_formatted, $term_id]);
$status = "Güncellendi";
} else {
// Yoksa ekle
$insert_stmt = $pdo->prepare("
INSERT INTO wp_termmeta (term_id, meta_key, meta_value)
VALUES (?, 'color', ?)
");
$insert_stmt->execute([$term_id, $rgb_formatted]);
$status = "Eklendi";
}
} else {
$term_id = "Bulunamadı";
$status = "Hata! Terim bulunamadı";
}
// Tabloyu doldur
echo "<tr>
<td>{$color['name']}</td>
<td>{$color['slug']}</td>
<td>rgb({$color['rgb']})</td>
<td>{$term_id}</td>
<td>{$status}</td>
</tr>";
}
echo "</table>";
echo "<p>İşlem tamamlandı. " . count($colors) . " renk işlendi.</p>";
} catch (PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
die();
}