WordPress答疑主题开发:实现邮箱自动识别并添加mailto前缀
解决方案
要实现自动识别邮箱并添加mailto:前缀的功能,你可以按照以下步骤修改代码:
1. 添加邮箱处理辅助函数
先创建一个辅助函数,用于验证输入是否为合法邮箱,并自动处理成对应的格式:
function glat_process_contact_address($address) { // 清理用户输入 $address = sanitize_text_field($address); // 使用WordPress内置函数验证邮箱合法性 if (is_email($address)) { return 'mailto:' . $address; } // 处理普通链接(可选:自动补全http前缀) if (!preg_match('#^https?://#i', $address)) { $address = 'http://' . $address; } return esc_url($address); }
2. 修改保存问题的函数
在你的glat_save_new_problem函数中,对用户提交的接收地址字段(假设字段名为contact_address,请根据实际表单字段名修改)调用上述辅助函数:
function glat_save_new_problem() { check_ajax_referer('company_new_job_ajax_nonce', 'security'); // 处理用户提交的接收地址 $contact_address = isset($_POST['contact_address']) ? glat_process_contact_address($_POST['contact_address']) : ''; $location = isset($_POST['location']) ? sanitize_text_field($_POST['location']) : ''; $valid = isset($_POST['valid']) ? sanitize_text_field($_POST['valid']) : ''; $action = isset($_POST['btn_action']) ? sanitize_text_field($_POST['btn_action']) : ''; // 补全原代码缺失的闭合 // 后续将处理后的$contact_address存入数据库(示例) // 假设你已经创建了问题的post对象,$post_id为对应ID // update_post_meta($post_id, 'glat_contact_address', $contact_address); }
3. 前端输出链接
在主题模板中显示接收解答的链接时,直接使用处理后的地址即可:
$contact_address = get_post_meta(get_the_ID(), 'glat_contact_address', true); if (!empty($contact_address)) { echo '<a href="' . esc_url($contact_address) . '">接收解答</a>'; }
关键说明
- 利用WordPress内置的
is_email()函数验证邮箱,比自定义正则表达式更准确可靠 - 使用
esc_url()处理链接,避免XSS安全风险 - 自动为普通链接补全
http://前缀,防止出现无效的相对路径链接
内容的提问来源于stack exchange,提问作者Abhiupadhyay
相关产品推荐
相关产品推荐

