Hi all
I'm working on importing products to wp ecomerce 3.8.9.1 from lines of text file. (now i work with database updating without file import)
How can I correctly generate values for keys:
- _wpsc_product_metadata
- _wp_attachment_metadata
Can i generate this keys in my script without wordpress?
for example my script...
<?php
// Интеграция склада 1С с интернет магазином
function trans($str) {
$converter = array('а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'y',
'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c',
'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', 'ь' => '\'', 'ы' => 'y', 'ъ' => '\'','э' => 'e', 'ю' => 'yu', 'я' => 'ya', 'А' => 'A', 'Б' => 'B', 'В' => 'V',
'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'Y', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N',
'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch',
'Ь' => '\'', 'Ы' => 'Y', 'Ъ' => '\'', 'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya',);
return strtr($str, $converter);
}
function strurl($str) {
$str = trans($str);
$str = strtolower($str);
$str = preg_replace('~[^-a-z0-9_]+~u', '-', $str);
$str = trim($str, "-");
return $str;
}
function my($query){
$my = mysql_connect("localhost", "root", "") or die("Нет MySQL.");
$my = mysql_select_db("krilony", $my) or die("Нет базы.");
$query = mysql_query($query);
unset($my);
return $query;
}
function fx($x){ //возвращает ID в posts x - АРТ (post_excerpt)
$query="SELECT MAX(ID) FROM wp_posts";
$max = mysql_result(my($query), 0,0);
for($i=$max;$i>0;$i--){
$query = my("SELECT post_excerpt, ID FROM wp_posts WHERE ID=".$i);
if(mysql_num_rows($query)>0)$z = mysql_fetch_assoc($query);
if($z[post_excerpt]==$x){
return $z[ID];
}
}
return false;
}
function fy($x,$y){ //возвращает meta_id в postmeta по ID.. х - post_id y - meta_key
$query="SELECT MAX(meta_id) FROM wp_postmeta";
$max = mysql_result(my($query), 0,0);
for($i=$max;$i>0;$i--){
$query = my("SELECT meta_id, post_id, meta_key FROM wp_postmeta WHERE meta_id=".$i);
if(mysql_num_rows($query)>0){$z = mysql_fetch_assoc($query);
if(strcmp($z[post_id], $x) == 0 && strcmp($z[meta_key], $y) == 0 ){
return $z[meta_id];
}
}
}
return false;
}
// НАЧАЛО
$n = date("Y-m-d H:i:s");
$newart[0] = 0;
$newkod = 0;
//$in = "|00102|ТЕХНОЛОЖКА (Московский, 41)|19262| сертификат подарочный|0||1|5 000|||";
//$in = "|00102|ТЕХНОЛОЖКА (Московский, 41)|17991|бадлон жен.|29|черный, 54|1|500|вискоза 95 %; лайкра 5 %|Бадлон женский, облигающий силуэт. С воротником-стойкой и коротким рукавом. Изготовлен из трикотажного эластичного полотна. Модель произведна по финской технологии, в лучших традициях бренда Mr. JOUKO. |";
//$in = "|00102|ТЕХНОЛОЖКА (Московский, 41)|18782|бюстгальтер|20|черный, 80-B|2|830|Полиамид 80 %; ПУ 20 %|Повседневный классический бюстгальтер из эластичного трикотажного полотна. Чашечки "Анжелика" с эффектом "push-up" на каркасах, дублированные хлопком, с объемными вкладышами. По центру модель оформлена шелковым цветком.|Благодаря своей конструкции бюстгальтер прекрасно поддерживает и приподнимает грудь, визуально придавая пышность форм. Приятен к телу и удобен в ношении благодаря натуральным тканям и регулируемым эластичным лямкам.|";
//$in = "|00114|Смолячкова, 11|03399|бюстгальтер|13|черный, 70-A|1|250|хлопок 100 %||";
$in = "|00109|Нарвский, 27|17991|бадлон жен.|4|сирень тем., 48|1|500|вискоза 95 %; лайкра 5 %|Бадлон женский, облигающий силуэт. С воротником-стойкой и коротким рукавом. Изготовлен из трикотажного эластичного полотна. Модель произведна по финской технологии, в лучших традициях бренда Mr. JOUKO. |";
$mass = explode("|", $in);
$mass[0] = strurl($mass[4]).'-'.$mass[3];
$mass[11]= $mass[0].'-'.strurl($mass[6]);
// ОБРАБАТЫВАЮ ТОЛЬКО АРТИКЛЬ !!! проверяю есть ли такой артикул в базе, если нету - добавляю t-ID
$t=fx($mass[3]);
if($t==false){ // ЕСЛИ В БАЗЕ НЕТ ТАКОГО АРТИКЛЯ
my("INSERT INTO krilony . wp_posts ( ID , post_author , post_date , post_date_gmt , post_content , post_title , post_excerpt , post_status , comment_status , ping_status , post_password , post_name , to_ping , pinged , post_modified , post_modified_gmt , post_content_filtered , post_parent , guid , menu_order , post_type , post_mime_type , comment_count ) VALUES (NULL, '11', '".$n."', '".$n."', '".$mass[10]."', '".$mass[4]."', '".$mass[3]."', 'publish', 'closed', 'closed', '', '".$mass[0]."', '', '', '".$n."', '".$n."', '', '0', 'http://shop.krilony.ru/catalog/uncategorized/', '0', 'wpsc-product', '', '0');");
$t=fx($mass[3]);
//тут можно сначала почистить в postmeta ошибочные вхождения для нового товара (если есть)
my("INSERT INTO krilony . wp_postmeta ( meta_id , post_id , meta_key , meta_value ) VALUES
(NULL, '".$t."', '_wpsc_price', '".$mass[8]."'),
(NULL, '".$t."', 'Состав', '".$mass[9]."'),
(NULL, '".$t."', '_wpsc_special_price', '".$mass[8]."'),
(NULL, '".$t."', '_wpsc_product_metadata', '".mysql_escape_string('a:15:{s:13:"external_link";s:0:"";s:18:"external_link_text";s:0:"";s:20:"external_link_target";s:0:"";s:14:"merchant_notes";s:0:"";s:8:"engraved";s:1:"0";s:23:"can_have_uploaded_image";s:1:"0";s:15:"enable_comments";s:0:"";s:21:"notify_when_none_left";s:1:"0";s:24:"unpublish_when_none_left";s:1:"0";s:11:"no_shipping";s:1:"0";s:16:"quantity_limited";s:1:"0";s:7:"special";s:1:"0";s:17:"display_weight_as";s:0:"";s:16:"table_rate_price";a:2:{s:11:"table_price";a:0:{}s:8:"quantity";a:0:{}}s:17:"google_prohibited";s:1:"0";}')."'),
(NULL, '".$t."', '_wpsc_is_donation', '0'),
(NULL, '".$t."', '_rating', ' field_1'),
(NULL, '".$t."', '_wpsc_compare_category', '0'),
(NULL, '".$t."', '_wpsc_compare_category_name',''),
(NULL, '".$t."', '_size', 'field_12'),
(NULL, '".$t."', '_Категория', 'field_1'),
(NULL, '".$t."', '_brand', 'field_2'),
(NULL, '".$t."', '_price', 'field_10')");
} // (NULL, '".$t."', '', ''), вставил postmeta АРТ , далее обновляю товар по АРТ
$query = my("SELECT ID, post_content, post_title FROM wp_posts WHERE ID=".$t);
if(mysql_num_rows($query)>0) $query = mysql_fetch_assoc($query);
if($query[post_content]<> $mass[10] || $query[post_title]<>$mass[4]) $query = my("UPDATE wp_posts SET post_content ='".$mass[10]."', post_title ='".$mass[4]."', post_name ='".$mass[0]."', post_modified ='".$n."', post_modified_gmt ='".$n."' WHERE ID=".$query[ID]);
$query = fy($t,"Состав");
if($query>0) my("UPDATE wp_postmeta SET meta_value = '".$mass[9]."' WHERE meta_id=".$query);
$query = fy($t,'_wpsc_price');
if($query> 0) my("UPDATE wp_postmeta SET meta_value = '".$mass[8]."' WHERE meta_id=".$query);
$query = fy($t,'_wpsc_special_price');
if($query> 0) my("UPDATE wp_postmeta SET meta_value = '".$mass[8]."' WHERE meta_id=".$query);
// тут удобно заценить картинки на наличие и добавить в базу
// ТЕПЕРЬ ОБРАБАТЫВАЮ ХАРАКТЕРИСТИКИ теперь проверяем есть ли такие модификации товара (размер-цвет) tt-ID
$tt=fx($mass[3].$mass[5]);
if($tt==false){ // ЕСЛИ В БАЗЕ НЕТ ТАКОЙ МОДИФИКАЦИИ
my("INSERT INTO krilony . wp_posts ( ID , post_author , post_date , post_date_gmt , post_content , post_title , post_excerpt , post_status , comment_status , ping_status , post_password , post_name , to_ping , pinged , post_modified , post_modified_gmt , post_content_filtered , post_parent , guid , menu_order , post_type , post_mime_type , comment_count ) VALUES (NULL, '11', '".$n."', '".$n."', '".$mass[10]."', '".$mass[4]."(".$mass[6].")', '".$mass[3].$mass[5]."', 'inherit', 'closed', 'closed', '', '".$mass[11]."', '', '', '".$n."', '".$n."', '', '".$t."', 'http://shop.krilony.ru/catalog/uncategorized/', '0', 'wpsc-product', '', '0');");
$tt=fx($mass[3].$mass[5]);
//тут можно сначала почистить в postmeta ошибочные вхождения для новой модификации товара (если есть)
my("INSERT INTO krilony . wp_postmeta ( meta_id , post_id , meta_key , meta_value ) VALUES
(NULL, '".$tt."', '_wpsc_price', '".$mass[8]."'),
(NULL, '".$tt."', 'Состав', '".$mass[9]."'),
(NULL, '".$tt."', '_wpsc_stock', '".$mass[7]."'),
(NULL, '".$tt."', '_wpsc_special_price', '".$mass[8]."'),
(NULL, '".$tt."', '_wpsc_product_metadata', '".mysql_escape_string('a:15:{s:14:"merchant_notes";s:0:"";s:8:"engraved";s:1:"0";s:23:"can_have_uploaded_image";s:1:"0";s:15:"enable_comments";s:0:"";s:13:"external_link";s:0:"";s:18:"external_link_text";s:0:"";s:20:"external_link_target";s:0:"";s:21:"notify_when_none_left";s:1:"0";s:24:"unpublish_when_none_left";s:1:"0";s:11:"no_shipping";s:1:"0";s:16:"quantity_limited";s:1:"0";s:7:"special";s:1:"0";s:17:"display_weight_as";s:0:"";s:16:"table_rate_price";a:2:{s:11:"table_price";a:0:{}s:8:"quantity";a:0:{}}s:17:"google_prohibited";s:1:"0";}')."'),
(NULL, '".$tt."', '_wpsc_is_donation', '0'),
(NULL, '".$tt."', '_rating', ' field_1'),
(NULL, '".$tt."', '_wpsc_compare_category', '0'),
(NULL, '".$tt."', '_wpsc_compare_category_name',''),
(NULL, '".$tt."', '_size', 'field_12'),
(NULL, '".$tt."', '_Категория', 'field_1'),
(NULL, '".$tt."', '_brand', 'field_2'),
(NULL, '".$tt."', '_price', 'field_10')");
} // (NULL, '".$tt."', '', ''), //вставил модификации , обновляю модификации
$query = my("SELECT ID, post_content, post_title FROM wp_posts WHERE ID=".$tt);
if(mysql_num_rows($query)>0) $query = mysql_fetch_assoc($query);
if($query[post_content]<> $mass[10] || $query[post_title]<>$mass[4]) $query = my("UPDATE wp_posts SET post_content ='".$mass[10]."', post_title ='".$mass[4]."', post_name ='".$mass[11]."', post_modified ='".$n."', post_modified_gmt ='".$n."' WHERE ID=".$query[ID]);
$query = fy($tt,"Состав");
if($query>0) my("UPDATE wp_postmeta SET meta_value = '".$mass[9]."' WHERE meta_id=".$query);
$query = fy($tt,'_wpsc_price');
if($query> 0) my("UPDATE wp_postmeta SET meta_value = '".$mass[8]."' WHERE meta_id=".$query);
$query = fy($tt,'_wpsc_special_price');
if($query> 0) my("UPDATE wp_postmeta SET meta_value = '".$mass[8]."' WHERE meta_id=".$query);
$query = fy($tt,'_wpsc_stock');
if($query> 0) my("UPDATE wp_postmeta SET meta_value = '".$mass[7]."' WHERE meta_id=".$query);
?>