can_use_premium_code__premium_only(); // Get date filter values $date_from = isset($_GET['date_from']) ? sanitize_text_field(wp_unslash($_GET['date_from'])) : ''; $date_to = isset($_GET['date_to']) ? sanitize_text_field(wp_unslash($_GET['date_to'])) : ''; // Validate dates if ($date_from && !preg_match('/^\d{4}-\d{2}-\d{2}$/', $date_from)) { $date_from = ''; } if ($date_to && !preg_match('/^\d{4}-\d{2}-\d{2}$/', $date_to)) { $date_to = ''; } // Handle CSV export if ($is_pro && isset($_GET['action']) && 'export_csv' === $_GET['action']) { if (!wp_verify_nonce(sanitize_text_field(wp_unslash($_GET['_wpnonce'] ?? '')), 'king_addons_wishlist_export')) { wp_die(esc_html__('Invalid request.', 'king-addons')); } $service = new Wishlist_Service(); $stats = $service->get_product_stats($date_from ?: null, $date_to ?: null); header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=wishlist-analytics-' . gmdate('Y-m-d') . '.csv'); $output = fopen('php://output', 'w'); fputcsv($output, [ esc_html__('Product ID', 'king-addons'), esc_html__('Product Name', 'king-addons'), esc_html__('Wishlist Adds', 'king-addons'), esc_html__('Conversions', 'king-addons'), esc_html__('Revenue', 'king-addons'), esc_html__('Conversion Rate', 'king-addons'), esc_html__('Price', 'king-addons'), esc_html__('Stock Status', 'king-addons'), ]); foreach ($stats as $row) { $product = function_exists('wc_get_product') ? wc_get_product($row['product_id']) : null; $conv_rate = $row['adds'] > 0 ? round(($row['conversions'] / $row['adds']) * 100, 1) : 0; fputcsv($output, [ $row['product_id'], $product ? $product->get_name() : sprintf(esc_html__('Product #%d', 'king-addons'), $row['product_id']), $row['adds'], $row['conversions'], $row['revenue'], $conv_rate . '%', $product ? $product->get_price() : '', $product ? ($product->is_in_stock() ? 'In Stock' : 'Out of Stock') : '', ]); } fclose($output); exit; } // Enqueue the shared CSS $css_url = KING_ADDONS_URL . 'includes/admin/layouts/shared/admin-v3-styles.css'; $css_path = KING_ADDONS_PATH . 'includes/admin/layouts/shared/admin-v3-styles.css'; $css_version = file_exists($css_path) ? filemtime($css_path) : KING_ADDONS_VERSION; ?>
| % | get_price_html()) : '-'; ?> | is_in_stock()): ?> - |