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

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

10.11.2020

969

Чтобы при последующей выгрузке товаров плагином 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' );
}
[site-socialshare]
  • Комментарии
  • Вложения

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

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

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