← ClaudeAtlas

wp-email-templateslisted

Use when adding or refactoring transactional emails in a WordPress plugin — extract inline email strings into reusable HTML templates that share one branded base wrapper, sent as HTML via wp_mail().
mralaminahamed/wp-dev-skills · ★ 3 · Data & Documents · score 76
Install: claude install-skill mralaminahamed/wp-dev-skills
# Reusable HTML Email Templates (WordPress plugin) Move email bodies out of inline PHP strings into `templates/emails/`, where every message reuses one branded shell. Adding a new email = adding one content file. ## When to use - "Move email content to templates", "branded/HTML emails", "reuse an email template". - Any plugin building messages inline with `wp_mail()` heredocs. ## Structure ``` templates/emails/ base.php shared shell: header, body slot ($content), footer <name>.php per-email content (greeting, copy, CTA button) ``` - **base.php** — table-based, inline-CSS responsive shell (email clients ignore `<style>`/external CSS). Receives `$subject`, `$preheader`, `$content`, `$site_name`, `$site_url`. Echoes `$content` raw (`// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped` — content templates escape their own values). - **content templates** — escape every variable (`esc_html`, `esc_url`); wrap copy in `__()`/`esc_html__()` with the text domain; use `_n()` for plurals. Guard each `$var = $var ?? default;` so the file is robust if rendered standalone. ## Render helpers (in your Helpers class) ```php public static function render_template( string $path, array $vars = [] ): string { if ( ! is_readable( $path ) ) return ''; // phpcs:ignore WordPress.PHP.DontExtract.extract_extract -- controlled template vars extract( $vars, EXTR_SKIP ); ob_start(); include $path; return (string) ob_get_clean(); } public st