allWithStats(); ?>

$version->name, (array) $item['versions']); ?>
name); ?>
slug); ?>

"return window.confirm('" . esc_js(__('Move selected products and their imported pages to the trash?', 'kb-markdown-importer')) . "');", ]); ?>
$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'); } } }