Releases: fphxgallery/wordpress-ai-email-marketing-plugin
Release list
v1.2.4
Bug Fixes
- Scheduled campaign timezone display — Campaign list "Scheduled For" column and edit form date picker were showing times 7 hours off on sites where the WordPress timezone (e.g. Phoenix, UTC-7) differs from the PHP server timezone (UTC).
scheduled_atis stored in WP local time butstrtotime()was treating it as UTC. Fixed both display sites to useDateTimeImmutable+wp_timezone()for correct parsing.
Improvements
- Cron logging — Added
cron_checkandcron_batchlog events so cron activity is now visible in the Logs tab. Eachcheck_scheduledrun logs how many campaigns were found due and their IDs. Each batch run logs pending count, completion, and scheduling of subsequent batches. AI generation failures on recurring campaigns are now logged instead of silently ignored. - Log event filter — Added "Cron: Check Scheduled" and "Cron: Process Batch" entries to the Logs event filter dropdown.
v1.2.3
What's New
- Send Now button — Campaigns list now has a Send Now action for any scheduled campaign, bypassing the scheduled time for immediate dispatch
- Scheduled For column — Shows the next run time for scheduled campaigns with an overdue indicator if the time has passed without firing
- Template persistence — The Email Editor template selected when generating is now saved with the campaign and pre-selected when you re-open it; recurring AI regeneration uses this saved template automatically
- Scheduling timezone fix — schedule_campaign was parsing the datetime using PHP server timezone instead of WordPress timezone, which could cause campaigns to fire at the wrong time
Bug Fixes
- send_campaign and resend_campaign now call process_batch directly instead of scheduling via WP-Cron, ensuring emails go out immediately on Send Now
- Fixed fatal PHP error on new campaign edit page (null campaign → template_id access)
DB Migration
A new template_id column is added to wp_aiem_campaigns automatically on first page load after updating.
v1.2.2
Breaking Change
Email wrapper removed — campaigns are now sent as the raw HTML you write, with no gradient header or white container added around them. Tracking pixel, merge tags, link rewriting, and {{unsubscribe_url}} / {{site_name}} / {{site_url}} placeholders are still applied directly to your HTML. If you were relying on the wrapper for an unsubscribe link, add {{unsubscribe_url}} to your campaign HTML.
v1.2.1
Improvement
Multi-product template layout — when multiple WooCommerce products are provided, the AI now places each product in its own section separated by dividers, with the footer block always at the end. Structure: product 1 → <hr> → product 2 → <hr> → footer.
v1.2.0
Bug Fix
Template HTML stripped on save — wp_kses_post() was silently removing inline CSS properties and <img src=""> tags from email templates, campaigns, and workflow content. Since all these save paths require manage_options, replaced with wp_unslash() so the full HTML is preserved.
v1.1.9
New
Reset to Default buttons — Settings → OpenAI now has a Reset to Default button next to both the System Prompt and Template System Prompt fields. Clicking confirms before overwriting the current value.
v1.1.8
Bug Fixes
Backslash in subject line — WordPress applies wp_magic_quotes() to all $_POST data, adding backslashes before apostrophes (e.g. Don\'t). Fixed by adding wp_unslash() before sanitization on all campaign and workflow text fields.
Button styles stripped by AI — AI was replacing styled button <a> tags with plain hyperlinks, losing inline CSS. Updated template system prompt to explicitly require preserving all attribute values on anchor tags verbatim.
v1.1.7
New
Template System Prompt now editable — Settings → OpenAI has a new "Template System Prompt" textarea. Pre-fills with the current default. Edit it to tune how the AI fills your Email Editor templates without touching plugin code.
v1.1.6
Bug Fix
AI was rewriting style attributes when filling templates, dropping text-align:center and other CSS properties. System prompt now explicitly instructs the AI to copy every tag and style attribute verbatim — only text nodes and img src/alt may change.
v1.1.5
Bug Fixes
Image blocks dropped from template HTML — image blocks with no URL set were returning empty string from the template renderer, so the saved html_content contained no <img> tag. The AI had nothing to fill. Now renders <img src=""> so the AI can populate src and alt.
AI not replacing placeholder text — expanded the template-mode system prompt to explicitly instruct the AI to replace all generic placeholder text ("Your footer", "product title", "Your Heading", etc.), write real footer content, and populate empty image src attributes with relevant public image URLs.
Action required after updating
Re-open your template in Email Editor, click Update Template to re-save the HTML with the image tag included, then generate again.