allWithStats();
?>
$rawProduct) {
$termId = absint($rawTermId);
$rawProduct = (array) $rawProduct;
if (! $termId) {
continue;
}
$result = $repository->update(
$termId,
sanitize_text_field(wp_unslash((string) ($rawProduct['product_name'] ?? ''))),
sanitize_title(wp_unslash((string) ($rawProduct['product_slug'] ?? ''))),
[
'group_name' => sanitize_text_field(wp_unslash((string) ($rawProduct['group_name'] ?? ''))),
'group_slug' => sanitize_title(wp_unslash((string) ($rawProduct['group_slug'] ?? ''))),
'part_label' => sanitize_text_field(wp_unslash((string) ($rawProduct['part_label'] ?? ''))),
'category' => sanitize_text_field(wp_unslash((string) ($rawProduct['category'] ?? ''))),
]
);
if (is_wp_error($result)) {
add_settings_error('kb_markdown_products', 'update_failed_' . $termId, $result->get_error_message(), 'error');
continue;
}
$saved++;
}
add_settings_error('kb_markdown_products', 'updated', sprintf(
/* translators: %d: number of saved products. */
__('Saved %d products.', 'kb-markdown-importer'),
$saved
), 'success');
return;
}
if ('delete_selected' === $action) {
check_admin_referer('kb_markdown_save_all_products');
$termIds = array_map('absint', (array) ($_POST['delete_terms'] ?? []));
$deleted = 0;
foreach (array_filter($termIds) as $termId) {
$result = $repository->deleteProduct($termId, true);
if (is_wp_error($result)) {
add_settings_error('kb_markdown_products', 'delete_failed_' . $termId, $result->get_error_message(), 'error');
continue;
}
$deleted++;
}
add_settings_error('kb_markdown_products', 'deleted', sprintf(
/* translators: %d: number of deleted products. */
__('Deleted %d products.', 'kb-markdown-importer'),
$deleted
), 'success');
}
}
}