{"id":8677,"date":"2026-02-13T12:42:48","date_gmt":"2026-02-13T06:42:48","guid":{"rendered":"https:\/\/avemedia.net\/?page_id=8677"},"modified":"2026-03-08T06:25:09","modified_gmt":"2026-03-08T00:25:09","slug":"code-testing-page","status":"publish","type":"page","link":"https:\/\/avemedia.net\/?page_id=8677","title":{"rendered":"Code testing page"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"8677\" class=\"elementor elementor-8677\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b5814ec e-flex e-con-boxed e-con e-parent\" data-id=\"b5814ec\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-09e4564 elementor-widget elementor-widget-html\" data-id=\"09e4564\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Bulk Email Sender - Spreadsheet to 500 Emails<\/title>\n    <style>\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        body {\n            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n            min-height: 100vh;\n            padding: 20px;\n        }\n\n        .container {\n            max-width: 1200px;\n            margin: 0 auto;\n            background: white;\n            border-radius: 20px;\n            box-shadow: 0 20px 60px rgba(0,0,0,0.3);\n            overflow: hidden;\n        }\n\n        .header {\n            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n            color: white;\n            padding: 40px;\n            text-align: center;\n        }\n\n        .header h1 {\n            font-size: 2.5em;\n            margin-bottom: 10px;\n        }\n\n        .header p {\n            opacity: 0.9;\n            font-size: 1.1em;\n        }\n\n        .content {\n            padding: 40px;\n        }\n\n        .input-section {\n            background: #f8f9fa;\n            padding: 30px;\n            border-radius: 15px;\n            margin-bottom: 30px;\n        }\n\n        .form-group {\n            margin-bottom: 20px;\n        }\n\n        label {\n            display: block;\n            margin-bottom: 8px;\n            font-weight: 600;\n            color: #333;\n        }\n\n        input[type=\"text\"],\n        input[type=\"email\"],\n        textarea,\n        select {\n            width: 100%;\n            padding: 12px;\n            border: 2px solid #e0e0e0;\n            border-radius: 8px;\n            font-size: 16px;\n            transition: border-color 0.3s;\n        }\n\n        input[type=\"text\"]:focus,\n        textarea:focus,\n        select:focus {\n            outline: none;\n            border-color: #667eea;\n        }\n\n        textarea {\n            min-height: 120px;\n            resize: vertical;\n        }\n\n        .btn {\n            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n            color: white;\n            border: none;\n            padding: 15px 40px;\n            font-size: 18px;\n            border-radius: 30px;\n            cursor: pointer;\n            transition: transform 0.2s, box-shadow 0.2s;\n            font-weight: 600;\n        }\n\n        .btn:hover {\n            transform: translateY(-2px);\n            box-shadow: 0 10px 20px rgba(102, 126, 234, 0.3);\n        }\n\n        .btn:disabled {\n            opacity: 0.6;\n            cursor: not-allowed;\n            transform: none;\n        }\n\n        .btn-secondary {\n            background: #6c757d;\n            margin-left: 10px;\n        }\n\n        .preview-section {\n            display: none;\n            margin-top: 30px;\n        }\n\n        .stats {\n            display: grid;\n            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n            gap: 20px;\n            margin-bottom: 30px;\n        }\n\n        .stat-card {\n            background: white;\n            padding: 20px;\n            border-radius: 10px;\n            box-shadow: 0 4px 6px rgba(0,0,0,0.1);\n            text-align: center;\n        }\n\n        .stat-number {\n            font-size: 2.5em;\n            font-weight: bold;\n            color: #667eea;\n        }\n\n        .stat-label {\n            color: #666;\n            margin-top: 5px;\n        }\n\n        table {\n            width: 100%;\n            border-collapse: collapse;\n            background: white;\n            border-radius: 10px;\n            overflow: hidden;\n            box-shadow: 0 4px 6px rgba(0,0,0,0.1);\n        }\n\n        th, td {\n            padding: 15px;\n            text-align: left;\n            border-bottom: 1px solid #e0e0e0;\n        }\n\n        th {\n            background: #667eea;\n            color: white;\n            font-weight: 600;\n        }\n\n        tr:hover {\n            background: #f8f9fa;\n        }\n\n        .progress-container {\n            display: none;\n            margin: 30px 0;\n            background: #e0e0e0;\n            border-radius: 10px;\n            overflow: hidden;\n            height: 30px;\n        }\n\n        .progress-bar {\n            height: 100%;\n            background: linear-gradient(90deg, #667eea 0%, #764ba2 100%);\n            width: 0%;\n            transition: width 0.3s;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            color: white;\n            font-weight: bold;\n        }\n\n        .log {\n            background: #1e1e1e;\n            color: #00ff00;\n            padding: 20px;\n            border-radius: 10px;\n            font-family: 'Courier New', monospace;\n            height: 300px;\n            overflow-y: auto;\n            margin-top: 20px;\n            display: none;\n        }\n\n        .log-entry {\n            margin-bottom: 5px;\n        }\n\n        .success { color: #00ff00; }\n        .error { color: #ff4444; }\n        .info { color: #ffff00; }\n\n        .template-vars {\n            background: #e3f2fd;\n            padding: 15px;\n            border-radius: 8px;\n            margin-bottom: 20px;\n            border-left: 4px solid #2196f3;\n        }\n\n        .template-vars code {\n            background: white;\n            padding: 2px 6px;\n            border-radius: 4px;\n            font-family: monospace;\n            color: #d32f2f;\n        }\n\n        .alert {\n            padding: 15px;\n            border-radius: 8px;\n            margin-bottom: 20px;\n        }\n\n        .alert-warning {\n            background: #fff3cd;\n            border-left: 4px solid #ffc107;\n            color: #856404;\n        }\n\n        .alert-info {\n            background: #d1ecf1;\n            border-left: 4px solid #17a2b8;\n            color: #0c5460;\n        }\n\n        @media (max-width: 768px) {\n            .content { padding: 20px; }\n            .header h1 { font-size: 1.8em; }\n            table { font-size: 14px; }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"container\">\n        <div class=\"header\">\n            <h1>\ud83d\udce7 Bulk Email Sender<\/h1>\n            <p>Upload a spreadsheet and send up to 500 personalized emails<\/p>\n        <\/div>\n\n        <div class=\"content\">\n            <div class=\"alert alert-warning\">\n                <strong>\u26a0\ufe0f Important:<\/strong> This tool prepares emails but requires an email service API (SendGrid, Mailgun, etc.) to actually send. You'll need to add your API key below.\n            <\/div>\n\n            <div class=\"input-section\">\n                <h2 style=\"margin-bottom: 20px;\">1. Spreadsheet Configuration<\/h2>\n                \n                <div class=\"form-group\">\n                    <label>Google Sheets Link (Public) OR CSV File<\/label>\n                    <input type=\"text\" id=\"sheetUrl\" placeholder=\"https:\/\/docs.google.com\/spreadsheets\/d\/...\/edit?usp=sharing\">\n                    <small style=\"color: #666; display: block; margin-top: 5px;\">\n                        Make sure the sheet is publicly viewable, or upload a CSV file below\n                    <\/small>\n                <\/div>\n\n                <div class=\"form-group\">\n                    <label>OR Upload CSV File<\/label>\n                    <input type=\"file\" id=\"csvFile\" accept=\".csv\" style=\"padding: 10px; border: 2px dashed #ccc; border-radius: 8px; width: 100%;\">\n                <\/div>\n\n                <button class=\"btn\" onclick=\"loadSpreadsheet()\">\ud83d\udcca Load Data<\/button>\n            <\/div>\n\n            <div id=\"emailConfig\" style=\"display: none;\">\n                <div class=\"input-section\">\n                    <h2 style=\"margin-bottom: 20px;\">2. Email Configuration<\/h2>\n                    \n                    <div class=\"template-vars\">\n                        <strong>Available Template Variables:<\/strong><br>\n                        Use <code>{{name}}<\/code>, <code>{{email}}<\/code>, or any column name from your spreadsheet as <code>{{column_name}}<\/code>\n                    <\/div>\n\n                    <div class=\"form-group\">\n                        <label>From Email<\/label>\n                        <input type=\"email\" id=\"fromEmail\" placeholder=\"you@example.com\">\n                    <\/div>\n\n                    <div class=\"form-group\">\n                        <label>Subject Line<\/label>\n                        <input type=\"text\" id=\"subject\" placeholder=\"Hello {{name}}! Special offer inside\">\n                    <\/div>\n\n                    <div class=\"form-group\">\n                        <label>Email Body (HTML supported)<\/label>\n                        <textarea id=\"emailBody\" placeholder=\"Hi {{name}},\n\nWe wanted to reach out regarding...\n\nBest regards,\nYour Name\"><\/textarea>\n                    <\/div>\n\n                    <div class=\"form-group\">\n                        <label>Email Service<\/label>\n                        <select id=\"emailService\">\n                            <option value=\"sendgrid\">SendGrid<\/option>\n                            <option value=\"mailgun\">Mailgun<\/option>\n                            <option value=\"brevo\">Brevo (Sendinblue)<\/option>\n                            <option value=\"resend\">Resend<\/option>\n                            <option value=\"ses\">AWS SES<\/option>\n                        <\/select>\n                    <\/div>\n\n                    <div class=\"form-group\">\n                        <label>API Key<\/label>\n                        <input type=\"text\" id=\"apiKey\" placeholder=\"Enter your API key\">\n                        <small style=\"color: #666;\">Your API key is only used in your browser and never stored.<\/small>\n                    <\/div>\n\n                    <div class=\"form-group\">\n                        <label>Send Rate (emails per second)<\/label>\n                        <input type=\"number\" id=\"rateLimit\" value=\"10\" min=\"1\" max=\"50\">\n                        <small style=\"color: #666;\">Most services limit to 10-14\/second. Higher rates risk blacklisting.<\/small>\n                    <\/div>\n                <\/div>\n\n                <div class=\"preview-section\" id=\"previewSection\">\n                    <h2 style=\"margin-bottom: 20px;\">3. Preview & Send<\/h2>\n                    \n                    <div class=\"stats\" id=\"stats\">\n                        <div class=\"stat-card\">\n                            <div class=\"stat-number\" id=\"totalCount\">0<\/div>\n                            <div class=\"stat-label\">Total Recipients<\/div>\n                        <\/div>\n                        <div class=\"stat-card\">\n                            <div class=\"stat-number\" id=\"validCount\">0<\/div>\n                            <div class=\"stat-label\">Valid Emails<\/div>\n                        <\/div>\n                        <div class=\"stat-card\">\n                            <div class=\"stat-number\" id=\"invalidCount\">0<\/div>\n                            <div class=\"stat-label\">Invalid Rows<\/div>\n                        <\/div>\n                    <\/div>\n\n                    <div style=\"margin-bottom: 20px;\">\n                        <button class=\"btn\" onclick=\"sendEmails()\" id=\"sendBtn\">\ud83d\ude80 Send Emails<\/button>\n                        <button class=\"btn btn-secondary\" onclick=\"testSend()\">\ud83d\udce7 Send Test (First Row)<\/button>\n                        <button class=\"btn btn-secondary\" onclick=\"exportCSV()\">\ud83d\udcbe Export as CSV<\/button>\n                    <\/div>\n\n                    <div class=\"progress-container\" id=\"progressContainer\">\n                        <div class=\"progress-bar\" id=\"progressBar\">0%<\/div>\n                    <\/div>\n\n                    <div class=\"log\" id=\"log\"><\/div>\n\n                    <h3 style=\"margin: 30px 0 15px;\">Preview (First 10 rows):<\/h3>\n                    <div style=\"overflow-x: auto;\">\n                        <table id=\"previewTable\">\n                            <thead id=\"tableHead\"><\/thead>\n                            <tbody id=\"tableBody\"><\/tbody>\n                        <\/table>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/PapaParse\/5.4.1\/papaparse.min.js\"><\/script>\n    <script>\n        let spreadsheetData = [];\n        let headers = [];\n\n        \/\/ Google Sheets URL converter\n        function convertGoogleSheetUrl(url) {\n            const match = url.match(\/spreadsheets\\\/d\\\/([a-zA-Z0-9-_]+)\/);\n            if (match) {\n                const sheetId = match[1];\n                return `https:\/\/docs.google.com\/spreadsheets\/d\/${sheetId}\/export?format=csv`;\n            }\n            return url;\n        }\n\n        async function loadSpreadsheet() {\n            const url = document.getElementById('sheetUrl').value;\n            const fileInput = document.getElementById('csvFile');\n            \n            showLog();\n            log('Starting data load...', 'info');\n\n            try {\n                let csvText;\n\n                if (fileInput.files.length > 0) {\n                    \/\/ Handle file upload\n                    const file = fileInput.files[0];\n                    csvText = await file.text();\n                    log(`Loaded file: ${file.name}`, 'success');\n                } else if (url) {\n                    \/\/ Handle Google Sheets or direct CSV URL\n                    const csvUrl = convertGoogleSheetUrl(url);\n                    log(`Fetching from: ${csvUrl}`, 'info');\n                    \n                    const response = await fetch(csvUrl);\n                    if (!response.ok) throw new Error('Failed to fetch spreadsheet');\n                    csvText = await response.text();\n                    log('Data fetched successfully', 'success');\n                } else {\n                    alert('Please provide a spreadsheet URL or upload a CSV file');\n                    return;\n                }\n\n                \/\/ Parse CSV\n                Papa.parse(csvText, {\n                    header: true,\n                    skipEmptyLines: true,\n                    complete: function(results) {\n                        spreadsheetData = results.data;\n                        headers = results.meta.fields;\n                        \n                        log(`Parsed ${spreadsheetData.length} rows with columns: ${headers.join(', ')}`, 'success');\n                        \n                        if (spreadsheetData.length > 500) {\n                            log('\u26a0\ufe0f Warning: More than 500 rows found. Only first 500 will be used.', 'error');\n                            spreadsheetData = spreadsheetData.slice(0, 500);\n                        }\n\n                        updatePreview();\n                        document.getElementById('emailConfig').style.display = 'block';\n                        document.getElementById('previewSection').style.display = 'block';\n                        \n                        \/\/ Smooth scroll to config\n                        document.getElementById('emailConfig').scrollIntoView({ behavior: 'smooth' });\n                    },\n                    error: function(error) {\n                        log(`Parse error: ${error.message}`, 'error');\n                    }\n                });\n\n            } catch (error) {\n                log(`Error: ${error.message}`, 'error');\n                alert('Error loading spreadsheet. Make sure Google Sheet is publicly viewable or check the URL.');\n            }\n        }\n\n        function updatePreview() {\n            \/\/ Update stats\n            const validEmails = spreadsheetData.filter(row => row.email && isValidEmail(row.email)).length;\n            document.getElementById('totalCount').textContent = spreadsheetData.length;\n            document.getElementById('validCount').textContent = validEmails;\n            document.getElementById('invalidCount').textContent = spreadsheetData.length - validEmails;\n\n            \/\/ Update table\n            const thead = document.getElementById('tableHead');\n            const tbody = document.getElementById('tableBody');\n            \n            \/\/ Create headers\n            let headerHTML = '<tr>';\n            headers.forEach(h => {\n                headerHTML += `<th>${h}<\/th>`;\n            });\n            headerHTML += '<th>Preview<\/th><\/tr>';\n            thead.innerHTML = headerHTML;\n\n            \/\/ Create rows (first 10)\n            let bodyHTML = '';\n            spreadsheetData.slice(0, 10).forEach((row, idx) => {\n                bodyHTML += '<tr>';\n                headers.forEach(h => {\n                    bodyHTML += `<td>${row[h] || ''}<\/td>`;\n                });\n                \n                \/\/ Preview rendered template\n                const preview = renderTemplate(document.getElementById('subject').value || 'Subject', row);\n                bodyHTML += `<td><small>${preview.substring(0, 50)}...<\/small><\/td>`;\n                bodyHTML += '<\/tr>';\n            });\n            tbody.innerHTML = bodyHTML;\n        }\n\n        function renderTemplate(template, data) {\n            let result = template;\n            Object.keys(data).forEach(key => {\n                const regex = new RegExp(`{{${key}}}`, 'g');\n                result = result.replace(regex, data[key] || '');\n            });\n            return result;\n        }\n\n        function isValidEmail(email) {\n            return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email);\n        }\n\n        async function sendEmails() {\n            const fromEmail = document.getElementById('fromEmail').value;\n            const subject = document.getElementById('subject').value;\n            const body = document.getElementById('emailBody').value;\n            const apiKey = document.getElementById('apiKey').value;\n            const service = document.getElementById('emailService').value;\n            const rateLimit = parseInt(document.getElementById('rateLimit').value) || 10;\n\n            if (!fromEmail || !subject || !body || !apiKey) {\n                alert('Please fill in all fields including API key');\n                return;\n            }\n\n            const btn = document.getElementById('sendBtn');\n            btn.disabled = true;\n            btn.textContent = 'Sending...';\n\n            const progressContainer = document.getElementById('progressContainer');\n            const progressBar = document.getElementById('progressBar');\n            progressContainer.style.display = 'block';\n\n            let sent = 0;\n            let failed = 0;\n            const total = spreadsheetData.length;\n\n            log(`Starting send process via ${service}...`, 'info');\n            log(`Rate: ${rateLimit} emails\/second`, 'info');\n\n            for (let i = 0; i < spreadsheetData.length; i++) {\n                const row = spreadsheetData[i];\n                \n                if (!row.email || !isValidEmail(row.email)) {\n                    log(`Skipping row ${i + 1}: Invalid email`, 'error');\n                    failed++;\n                    continue;\n                }\n\n                const personalizedSubject = renderTemplate(subject, row);\n                const personalizedBody = renderTemplate(body, row);\n\n                try {\n                    \/\/ Simulate API call - REPLACE WITH ACTUAL API CALL\n                    await simulateSend(service, {\n                        to: row.email,\n                        from: fromEmail,\n                        subject: personalizedSubject,\n                        html: personalizedBody,\n                        apiKey: apiKey\n                    });\n\n                    sent++;\n                    log(`\u2713 Sent to ${row.email}`, 'success');\n                } catch (error) {\n                    failed++;\n                    log(`\u2717 Failed to ${row.email}: ${error.message}`, 'error');\n                }\n\n                \/\/ Update progress\n                const percent = Math.round(((i + 1) \/ total) * 100);\n                progressBar.style.width = percent + '%';\n                progressBar.textContent = percent + '%';\n\n                \/\/ Rate limiting\n                if ((i + 1) % rateLimit === 0 && i < total - 1) {\n                    log(`Rate limit reached, pausing for 1 second...`, 'info');\n                    await sleep(1000);\n                }\n            }\n\n            log(`\\n=== COMPLETE ===`, 'info');\n            log(`Sent: ${sent}, Failed: ${failed}`, sent === total ? 'success' : 'info');\n            \n            btn.disabled = false;\n            btn.textContent = '\ud83d\ude80 Send Emails';\n        }\n\n        \/\/ SIMULATION FUNCTION - Replace with actual API integration\n        async function simulateSend(service, data) {\n            \/\/ This is where you'd integrate with SendGrid, Mailgun, etc.\n            \/\/ Example for SendGrid:\n            \/*\n            const response = await fetch('https:\/\/api.sendgrid.com\/v3\/mail\/send', {\n                method: 'POST',\n                headers: {\n                    'Authorization': `Bearer ${data.apiKey}`,\n                    'Content-Type': 'application\/json'\n                },\n                body: JSON.stringify({\n                    personalizations: [{ to: [{ email: data.to }] }],\n                    from: { email: data.from },\n                    subject: data.subject,\n                    content: [{ type: 'text\/html', value: data.html }]\n                })\n            });\n            if (!response.ok) throw new Error('Send failed');\n            *\/\n            \n            \/\/ Simulation delay\n            await sleep(100);\n            return true;\n        }\n\n        async function testSend() {\n            if (spreadsheetData.length === 0) return;\n            \n            const testData = spreadsheetData[0];\n            const subject = renderTemplate(document.getElementById('subject').value, testData);\n            const body = renderTemplate(document.getElementById('emailBody').value, testData);\n            \n            log('=== TEST EMAIL ===', 'info');\n            log(`To: ${testData.email}`, 'info');\n            log(`Subject: ${subject}`, 'info');\n            log(`Body Preview: ${body.substring(0, 200)}...`, 'info');\n            log('==================', 'info');\n            \n            alert(`Test email prepared for ${testData.email}\\n\\nCheck the log below for details.\\n\\nIn production, this would actually send.`);\n        }\n\n        function exportCSV() {\n            const subject = document.getElementById('subject').value;\n            const body = document.getElementById('emailBody').value;\n            \n            const exportData = spreadsheetData.map(row => ({\n                ...row,\n                rendered_subject: renderTemplate(subject, row),\n                rendered_body: renderTemplate(body, row)\n            }));\n\n            const csv = Papa.unparse(exportData);\n            const blob = new Blob([csv], { type: 'text\/csv' });\n            const url = window.URL.createObjectURL(blob);\n            const a = document.createElement('a');\n            a.href = url;\n            a.download = 'email_list_prepared.csv';\n            a.click();\n            \n            log('Exported prepared email list as CSV', 'success');\n        }\n\n        function sleep(ms) {\n            return new Promise(resolve => setTimeout(resolve, ms));\n        }\n\n        function showLog() {\n            document.getElementById('log').style.display = 'block';\n        }\n\n        function log(message, type = 'info') {\n            const logDiv = document.getElementById('log');\n            const entry = document.createElement('div');\n            entry.className = `log-entry ${type}`;\n            entry.textContent = `[${new Date().toLocaleTimeString()}] ${message}`;\n            logDiv.appendChild(entry);\n            logDiv.scrollTop = logDiv.scrollHeight;\n        }\n\n        \/\/ Update preview when template changes\n        document.getElementById('subject').addEventListener('input', updatePreview);\n        document.getElementById('emailBody').addEventListener('input', updatePreview);\n    <\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Bulk Email Sender &#8211; Spreadsheet to 500 Emails \ud83d\udce7 Bulk Email Sender Upload a spreadsheet and send up to 500 personalized emails \u26a0\ufe0f Important: This tool prepares emails but requires an email service API (SendGrid, Mailgun, etc.) to actually send. You&#8217;ll need to add your API key below. 1. Spreadsheet Configuration Google Sheets Link (Public) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"normal-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"disabled","ast-banner-title-visibility":"disabled","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"disabled","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-8677","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Code testing page<\/title>\n<meta name=\"description\" content=\"Code testing page\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/avemedia.net\/?page_id=8677\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Code testing page\" \/>\n<meta property=\"og:description\" content=\"Code testing page\" \/>\n<meta property=\"og:url\" content=\"https:\/\/avemedia.net\/?page_id=8677\" \/>\n<meta property=\"og:site_name\" content=\"Ave Media\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-08T00:25:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/avemedia.net\/wp-content\/uploads\/2026\/01\/cropped-fgg.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/avemedia.net\/?page_id=8677\",\"url\":\"https:\/\/avemedia.net\/?page_id=8677\",\"name\":\"Code testing page\",\"isPartOf\":{\"@id\":\"https:\/\/avemedia.net\/#website\"},\"datePublished\":\"2026-02-13T06:42:48+00:00\",\"dateModified\":\"2026-03-08T00:25:09+00:00\",\"description\":\"Code testing page\",\"breadcrumb\":{\"@id\":\"https:\/\/avemedia.net\/?page_id=8677#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/avemedia.net\/?page_id=8677\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/avemedia.net\/?page_id=8677#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/avemedia.net\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Code testing page\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/avemedia.net\/#website\",\"url\":\"https:\/\/avemedia.net\/\",\"name\":\"Ave Media\",\"description\":\"Professional Video Editing Agency\",\"publisher\":{\"@id\":\"https:\/\/avemedia.net\/#organization\"},\"alternateName\":\"avemedia\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/avemedia.net\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/avemedia.net\/#organization\",\"name\":\"Ave Media\",\"alternateName\":\"avemedia\",\"url\":\"https:\/\/avemedia.net\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/avemedia.net\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/avemedia.net\/wp-content\/uploads\/2026\/01\/cropped-fgg.webp\",\"contentUrl\":\"https:\/\/avemedia.net\/wp-content\/uploads\/2026\/01\/cropped-fgg.webp\",\"width\":512,\"height\":512,\"caption\":\"Ave Media\"},\"image\":{\"@id\":\"https:\/\/avemedia.net\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Code testing page","description":"Code testing page","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/avemedia.net\/?page_id=8677","og_locale":"en_US","og_type":"article","og_title":"Code testing page","og_description":"Code testing page","og_url":"https:\/\/avemedia.net\/?page_id=8677","og_site_name":"Ave Media","article_modified_time":"2026-03-08T00:25:09+00:00","og_image":[{"width":512,"height":512,"url":"https:\/\/avemedia.net\/wp-content\/uploads\/2026\/01\/cropped-fgg.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/avemedia.net\/?page_id=8677","url":"https:\/\/avemedia.net\/?page_id=8677","name":"Code testing page","isPartOf":{"@id":"https:\/\/avemedia.net\/#website"},"datePublished":"2026-02-13T06:42:48+00:00","dateModified":"2026-03-08T00:25:09+00:00","description":"Code testing page","breadcrumb":{"@id":"https:\/\/avemedia.net\/?page_id=8677#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/avemedia.net\/?page_id=8677"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/avemedia.net\/?page_id=8677#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/avemedia.net\/"},{"@type":"ListItem","position":2,"name":"Code testing page"}]},{"@type":"WebSite","@id":"https:\/\/avemedia.net\/#website","url":"https:\/\/avemedia.net\/","name":"Ave Media","description":"Professional Video Editing Agency","publisher":{"@id":"https:\/\/avemedia.net\/#organization"},"alternateName":"avemedia","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/avemedia.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/avemedia.net\/#organization","name":"Ave Media","alternateName":"avemedia","url":"https:\/\/avemedia.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/avemedia.net\/#\/schema\/logo\/image\/","url":"https:\/\/avemedia.net\/wp-content\/uploads\/2026\/01\/cropped-fgg.webp","contentUrl":"https:\/\/avemedia.net\/wp-content\/uploads\/2026\/01\/cropped-fgg.webp","width":512,"height":512,"caption":"Ave Media"},"image":{"@id":"https:\/\/avemedia.net\/#\/schema\/logo\/image\/"}}]}},"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/avemedia.net\/index.php?rest_route=\/wp\/v2\/pages\/8677","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/avemedia.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/avemedia.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/avemedia.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/avemedia.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8677"}],"version-history":[{"count":52,"href":"https:\/\/avemedia.net\/index.php?rest_route=\/wp\/v2\/pages\/8677\/revisions"}],"predecessor-version":[{"id":9817,"href":"https:\/\/avemedia.net\/index.php?rest_route=\/wp\/v2\/pages\/8677\/revisions\/9817"}],"wp:attachment":[{"href":"https:\/\/avemedia.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}