使用Contact Form 7发送邮件时<a>标签显示代码而非格式化链接
解决Contact Form 7邮件中HTML链接显示为纯文本的问题
我碰到过这个问题好几次,核心原因是Contact Form 7默认会自动转义邮件内容里的HTML标签(出于XSS安全防护的考虑),所以你的<a>标签被当成纯文本代码输出了。结合你用的Dynamic Text Extension插件,给你两个关键步骤来解决:
1. 补全并优化短码的HTML输出
先把你的短码补全为标准的HTML链接格式,确保返回内容是合法的HTML:
function get_pdf_link( $atts ) { global $post; switch ($post->post_title) { case 'Agency': return '<a rel="nofollow" target="_blank" href="https://your-domain.com/path/to/agency.pdf">下载Agency专属PDF</a>'; // 可根据需要添加其他页面的匹配规则 default: return '暂无可用PDF链接'; // 默认返回提示文本,避免空内容 } } add_shortcode( 'get_pdf_link', 'get_pdf_link' );
2. 让CF7允许短码输出的HTML内容
CF7的邮件系统默认会转义所有内容,我们需要通过钩子让特定短码的HTML跳过转义:
add_filter( 'wpcf7_mail_tag_filter', 'allow_pdf_link_html_in_cf7', 10, 3 ); function allow_pdf_link_html_in_cf7( $output, $name, $html ) { // 检测当前处理的是我们的自定义短码 if ( 'get_pdf_link' === $name ) { // 返回原始HTML,不进行转义处理 return do_shortcode( '[get_pdf_link]' ); } return $output; }
3. 确认CF7邮件设置为HTML类型
最后进入你的Contact Form 7表单编辑页,找到「邮件」标签:
- 滚动到「邮件类型」选项,选择「HTML」(默认是「纯文本」)
- 保存表单设置,这样邮件客户端才能正确渲染HTML链接
完成这三步后,测试提交表单,邮件里应该就能显示可点击的链接,而不是纯文本代码了。
内容的提问来源于stack exchange,提问作者Benjamin
相关产品推荐
相关产品推荐

