Яндекс.Маркет: строим YML-фид для размещения товаров в Маркете и других агрегаторах

Плагин магазина WP Shop имеет в своем арсенале функцию по созданию XML-фида в формате YML, являющимся де-факто стандартом при передаче данных о товарах и их свойствах во внешние аггрегаторы, такие как Яндекс Маркет и price.ru. Это помогает владельцам магазинов повышать продажи через внешние площадки.

Скрипт лежит в корне плагина в файле wpshop-yml.php и вкратце логика его работы такова: он формирует список рубрик и товаров на основе тех записей ВордПресс, которые имеют параметр цены (в виде дополнительного поля cost_1). Скрипт собирает такие записи а так же связанные с ними обязательные данные: картинки, рубрики, цены, дополнительные свойства и т.д. — и отдает их наружу по запросу. Исключаются те товары, которые имеют допполе noyml=1 или sklad_1=0 то есть те, которых в данный момент нет в наличии (на складе). Если Вы посмотрите на код ниже, Вы увидите каким образом включаются в YML разные данные о товарах:

.....
foreach ($res1 as $row){
	$sql2 = "SELECT `post_id` FROM `{$wpdb->postmeta}` WHERE `post_id` = '{$row->ID}' AND `meta_key` = 'noyml'";
	$r = $wpdb->get_results($sql2); 							//выполняется запрос в БД со списком товаров
	if ( empty($r))
	{
        $picture = get_post_meta($row->ID,'Thumbnail',true);
		// Делаем на случай, если помимо ссылки на картинку, мета-поле обтекает другой текст.
		//$picture = preg_match("#http://(.*)[\s\">]#U",$picture,$tmp);
		//$description = get_post_meta($row['ID'],'shorttext',true); 		//описание товара берется из дополя shorttext, или
		$description = strip_tags ($row->content);				//описание товара берется из контента записи
		$description = preg_replace("/&#?[a-z0-9]{2,8};/i"," ",$description);	//очищаем описание от HTML который может сломать YML
		$permalink = get_permalink($row->ID);					//берем URL товарной записи
		echo "ID}' available='true'>\n";			//выводим ID товарной записи
		echo "\t{$permalink}\n";					//выводим URL товарной записи
		echo "\t{$row->price}\n";				//выводим цену товара
		echo "\tRUR\n";				//выводим валюту
		echo "\t{$row->category}\n";			//выводим рубрику
		echo "\t{$picture}\n";				//выводим картинку
		echo "\ttrue\n";					//выводим доставку
		echo "\t{$row->name}\n";					//выводим наименование товара
		//echo "\t{$id_kurs}\n";
		echo "\t{$description}\n";			//выводим описание товара
		//echo "\t{$time}\n";
		echo "\n";
	}
}
echo "\n\n";
echo "\n";
echo "\n";

В следующем примере предлагается вывод большего количество дополнительных параметров товаров, нескольких картинок. Есть проверка, задан параметр или нет. Используйте его как подсказку при составлении требующихся именно Вам YML-фидов.

.....
foreach ($res1 as $row){
$sql2 = "SELECT `post_id` FROM `{$wpdb->postmeta}` WHERE `post_id` = '{$row->ID}' AND `meta_key` = 'noyml'";
	$r = $wpdb->get_results($sql2);
	if ( empty($r))
	{
		$model = get_post_meta($row->ID, 'model', true);						
		$group_id = get_post_meta($row->ID, 'group_id', true);
		if ($group_id){$groupid = " group_id='{$group_id}'";}
		$vendor = get_post_meta($row->ID, 'vendor', true);
		$unit_ru = get_post_meta($row->ID, 'unit_ru', true);
		$unit_int = get_post_meta($row->ID, 'unit_int', true);
		$old_price = get_post_meta($row->ID, 'old_price', true);
		$market_category = get_post_meta($row->ID, 'market_category', true);
		$delivery_cost = get_post_meta($row->ID, 'delivery_cost', true);
		$color = get_post_meta($row->ID, 'color', true);
		$material = get_post_meta($row->ID, 'material', true);
		$pol = get_post_meta($row->ID, 'pol', true);
		$age = get_post_meta($row->ID, 'age', true);
		//$picture = get_post_meta($row['ID'],'yml_pic',true);
                $picture = get_post_meta($row->ID,'Thumbnail',true);
		$picture1 = get_post_meta($row->ID,'Thumbnail1',true);
		$picture2 = get_post_meta($row->ID,'Thumbnail2',true);
		$picture3 = get_post_meta($row->ID,'Thumbnail3',true);
		// Делаем на случай, если помимо ссылки на картинку, мета-поле обтекает другой текст.
		//$picture = preg_match("#http://(.*)[\s\">]#U",$picture,$tmp);
		$description = get_post_meta($row->ID,'shorttext',true);
		//$description = strip_tags ($row['content']);
		$permalink = get_permalink($row->ID);
		echo "ID}' available='true'{$groupid}>\n";
		$groupid = '';
		echo "\t{$permalink}\n";
		echo "\t{$row->price}\n";
		if($old_price){echo "\t{$old_price}\n";}
		echo "\tBYR\n";
		echo "\t{$row->category}\n";
		if($market_category){echo "\t{$market_category}\n";}
		echo "\t{$picture}\n";
		if($picture1){echo "\t{$picture1}\n";}
		if($picture2){echo "\t{$picture2}\n";}
		if($picture3){echo "\t{$picture3}\n";}
		echo "\ttrue\n";
		if($delivery_cost){echo "\t{$delivery_cost}\n";}
		echo "\t{$row->name}\n";
		if($vendor){echo "\t{$vendor}\n";}
		//if($model){echo "\t{$model}\n";}
		echo "\t{$description}\n";
		if($unit_ru){echo "\t{$unit_ru}\n";}
		if($unit_int){echo "\t{$unit_int}\n";}
		if($color){echo "\t{$color}\n";}
		if($material){echo "\t{$material}\n";}
		if($pol){echo "\t{$pol}\n";}
		if($age){echo "\t{$age}\n";}
		echo "\n";
  }
}
echo "\n\n";
echo "\n";
echo "\n";
Если Вы не сильны в коде, мы сможем сделать это работу для Вас. Услуга платная. Стоимость зависит от сложности конструкции YML. Напишите нам через форму (нажмите + слева)
Загрузка…

wpshop_old написал 28 Статьи

Комментарии:

Оставьте ответ