WordPress.org

Forums

_wpsc_product_metadata and _wp_attachment_metadata values generating (3 posts)

  1. melior
    Member
    Posted 2 years ago #

    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);
    ?>
  2. melior
    Member
    Posted 2 years ago #

    Warning: implode() [function.implode]: Invalid arguments passed in Z:\home\shop\www\wp-content\plugins\wp-e-commerce\wpsc-admin\includes\product-variation-list-table.class.php on line 210

  3. vjpo
    Member
    Posted 2 years ago #

    Can i generate this keys in my script without wordpress?

    IMHO It is really easier to use WP API.
    add_post_meta() , update_post_meta()
    etc.

Topic Closed

This topic has been closed to new replies.

About this Topic