/ Плагины / Удаление записей при импорте

Удаление записей при импорте

10.11.2020

24

Чтобы при последующей выгрузке товаров плагином Wp all import товары не вошедшие в файл удалялись нужно сначала сделать изначальный импорт (New items), а потом в этом же импорте уже делать обновления (Existing Items).

При повторном импорте чтобы удалялись файлы которых нет в выгрузке нужно включить опцию «Delete Товары that are no longer present in your file»:

Альтернативный способ скрывать товары которых нет в выгрузке

Предположим что на сайте есть 3 крупные категории отличающиеся параметрами товаров. У двух групп есть ряд разных атрибутов, у третьей группы есть ряд подкатегорий. И предположим что для каждой настроен свой импорт. т.к. у каждого импорта есть свой ID то мы можем подключится к хуку и делать перед импортом все товары данной категории черновиками, а в процессе импорта те товары которые есть будут публиковаться при обновлении.

function before_xml_import( $import_id ) {
    
    // Only Run for import ID 34.
    if ($import_id == 34) { 
	
		$posts = get_posts( array(
			'numberposts' => -1,
			'post_type' => 'product',
			'product_cat' => 'opravy',
			'post_status' => 'publish'
		) );

		foreach( $posts as $post ){
			setup_postdata($post);
			//echo $post->ID.', ';
			wp_update_post( array('ID' => $post->ID, 'post_status' => 'draft') );
		}

		wp_reset_postdata();	
    
    }
	
	if ($import_id == 35) { 
	
		$posts = get_posts( array(
			'numberposts' => -1,
			'post_type' => 'product',
			'product_cat' => 'solncezashhitnye-ochki',
			'post_status' => 'publish'
		) );

		foreach( $posts as $post ){
			setup_postdata($post);
			//echo $post->ID.', ';
			wp_update_post( array('ID' => $post->ID, 'post_status' => 'draft') );
		}

		wp_reset_postdata();	
    
    }
	
	if ($import_id == 32) { 
	
		$posts = get_posts( array(
			'numberposts' => -1,
			'post_type' => 'product',
			'product_cat' => 'aksessuary',
			'post_status' => 'publish'
		) );

		foreach( $posts as $post ){
			setup_postdata($post);
			//echo $post->ID.', ';
			wp_update_post( array('ID' => $post->ID, 'post_status' => 'draft') );
		}

		wp_reset_postdata();	
    
    }

}
add_action('pmxi_before_xml_import', 'before_xml_import', 10, 1);

Ошибки при импорте

Если импортировать записи через Manage Imports (>Run) возникает ошибка: Your server terminated the import process (при этом при новом импорте данной ошибки может и не быть). При беглом изучении кажется что это ошибка сервера, но это зачастую не так. Просто данная ошибка может включать в себя диапазон любых php-ошибок. При возникновении данной ошибки нужно смотреть error_log.

В моем случае данная ошибка была из-за функции скрытия версии скриптов:

function script_loader_src_example( $src ) { return remove_query_arg( 'ver', $src ); }
add_filter( 'script_loader_src', 'script_loader_src_example' );
add_filter( 'style_loader_src', 'script_loader_src_example' );

Обернул функцию в условие и все заработало:

// Отключаем в адрессе ссылки версии скриптов
if( !is_admin() ) {
	function script_loader_src_example( $src ) { return remove_query_arg( 'ver', $src ); }
	add_filter( 'script_loader_src', 'script_loader_src_example' );
	add_filter( 'style_loader_src', 'script_loader_src_example' );
}

Поделится информацией с друзьями

  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

Удаление записей при импорте Удаление записей при импорте Удаление записей при импорте
Количество товара
Рекомендации для васКоличество товараOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.