Перенос картинок к записям из WordPress в Битрикс

12.05.2020  11:49

Дополнение к заметке как перенести записи из WordPress в 1С-Битрикс. Теперь - скрипт переноса картинок к записям из WordPress в Битрикс.

Для начала надо на сайте на WP установить плагин Export Featured Images 1.0 и экспортировать картинки.

Скрипт, импортирующий картинки в Битрикс:

$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
require($DOCUMENT_ROOT."/bitrix/modules/main/include/prolog_before.php");
$arErrors = array();
set_time_limit(0);
ini_set('max_execution_time', '36000');
// ini_set('memory_limit', '512M');
$IBLOCK_ID = 14;
$update = true;
//////////////
CModule::IncludeModule("iblock");
CModule::IncludeModule("catalog");
CModule::IncludeModule("sale");
$obE = new CIBlockElement();
$file = $_SERVER["DOCUMENT_ROOT"].'/scripts/images.xml';
$xml = simplexml_load_file($file);
function castr_str ($text,$length) {
$temp_text = explode(" ",$text);
$temp1_string = '';
for ($h=0; $h  count($temp_text); $h++) {
$temp2 = str_replace(" ","",$temp1_string);
if ((mb_strlen($temp2, 'utf-8')) < $length) $temp1_string .= ' '.$temp_text[$h];
}
if ((mb_strlen($text, 'utf-8') - mb_strlen($temp1_string, 'utf-8')) > 5) $text = $temp1_string.'...';
else $text = $temp1_string;
return($text);
}
function xmlObjToArr($obj) {
        $namespace = $obj->getDocNamespaces(true);
        $namespace[NULL] = NULL;
        $children = array();
        $attributes = array();
        $name = strtolower((string)$obj->getName());
        $text = trim((string)$obj);
        if( strlen($text) <= 0 ) {
            $text = NULL;
        }
        if(is_object($obj)) {
            foreach( $namespace as $ns=>$nsUrl ) {
                // atributes
                $objAttributes = $obj->attributes($ns, true);
                foreach( $objAttributes as $attributeName => $attributeValue ) {
                    $attribName = strtolower(trim((string)$attributeName));
                    $attribVal = trim((string)$attributeValue);
                    if (!empty($ns)) {
                        $attribName = $ns . ':' . $attribName;
                    }
                    $attributes[$attribName] = $attribVal;
                }
                // children
                $objChildren = $obj->children($ns, true);
                foreach( $objChildren as $childName=>$child ) {
                    $childName = strtolower((string)$childName);
                    if( !empty($ns) ) {
                        $childName = $ns.':'.$childName;
                    }
                    $children[$childName][] = xmlObjToArr($child);
                }
            }
        }
        return array(
            'name'=>$name,
            'text'=>$text,
            'attributes'=>$attributes,
            'children'=>$children
        );
    }
$array = xmlObjToArr($xml);
$count = 0;
$count_err = 0;
$tags = array();
foreach ($array['children'] as $item) {
foreach ($item[0]['children']['item'] as $post) {
$post_id = $post['children']['wp:post_parent'][0]['text'];
$attachment_url = $post['children']['wp:attachment_url'][0]['text'];
///////////////////////////
$arSelect = array(
				"ID",
				"NAME",
				"IBLOCK_ID",
				"PREVIEW_PICTURE",
				"DETAIL_PICTURE",
				"*",
			);
			$arFilter = array(
				"IBLOCK_ID" => $IBLOCK_ID,
				"IBLOCK_ACTIVE" => "Y",
				"=PROPERTY_ID_OLD" => $post_id,//$USER->GetId(),	_VALUE
			);
			$r = CIBlockElement::GetList(
				array(), 
				$arFilter, 
				false, 
				false, 
				$arSelect
			);
			if ( $arCurrentItem = $r->Fetch() ) {
			unset($arFields_upd,$arFile);
			$arFields_upd["IBLOCK_ID"] = $arCurrentItem["IBLOCK_ID"];
			$arFields_upd["ID"] = $arCurrentItem["ID"];
			if ( !empty($attachment_url)) {
						$arFile = CFile::MakeFileArray($attachment_url);
						$arFields_upd["PREVIEW_PICTURE"] = $arFile;
					}
				$obE = new CIBlockElement();
				if (!empty($arFields_upd)) {
				if ( $obE->Update($arCurrentItem["ID"], $arFields_upd) ) {
					echo $arCurrentItem["ID"].' - '.$arCurrentItem["NAME"].' - '.$attachment_url.' - '.'ok
'; } else echo 'err'; } else echo 'err get file'; //CIBlockElement::SetPropertyValuesEx($ID, $this->IBLOCK_ID, $arProps_upd); } echo 'no
'; /////////////////////////// } }
Андрей Панёвин
Здравствуйте! Я — Андрей Панёвин и занимаюсь профессиональной разработкой сайтов на платформе 1С-Битрикс (исключительно программирование). Есть вопросы по статье? Могу подсказать и помочь по скайпу (andrey.panevin.ru), WhatsApp (+7-911-091-0670) или перепиской в ВК.
1000 р./час.






Помогла статья? На поездку на море (Охотское):


перейти в Блог

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 63  PHP 77  web-программирование 101  Wordpress 2  XML 3  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю-:
Имя


email (не публикуется)