如何在WordPress求职板网站中通过邮件解析自动创建职位发布?
求职板邮件自动解析方案及主题选择建议
主题选择建议
- Job Monster:功能最全面的求职板主题,自带成熟的职位发布系统,自定义字段支持完善,官方文档详细,社区活跃。扩展邮件解析功能时,可用的钩子和API较多,适合打造中大型求职平台。
- Work Scout:轻量型主题,加载速度快,职位模块逻辑简洁,自定义字段配置门槛低,对新手开发者友好,适合中小型求职板快速搭建。
- Superio:UI设计现代,移动端适配优秀,自带的职位表单与自定义字段集成度高,注重用户体验,适合追求视觉效果和移动端表现的场景。
如果是技术基础一般的新手,优先选Work Scout;需要全功能支持选Job Monster;看重现代UI选Superio。
免费邮件解析自动创建职位方案
方案一:自定义IMAP解析脚本(适合有PHP基础的开发者)
利用PHP的IMAP扩展直接连接Gmail,读取邮件并解析内容,调用WordPress API创建职位发布,全程免费且可控。
步骤:
- 开启Gmail IMAP权限:登录Gmail,进入「设置」→「转发和POP/IMAP」,开启IMAP;若开启了两步验证,需生成应用专用密码替代登录密码。
- 编写解析脚本:创建PHP脚本(可做成WordPress自定义插件或添加到主题
functions.php),示例代码如下:
// 配置邮箱信息 $imap_host = '{imap.gmail.com:993/ssl}INBOX'; $imap_user = '你的邮箱地址@gmail.com'; $imap_pass = '你的应用专用密码'; // 连接IMAP服务器 $conn = imap_open($imap_host, $imap_user, $imap_pass); if (!$conn) { error_log('IMAP连接失败: ' . imap_last_error()); return; } // 筛选未读邮件 $unseen_emails = imap_search($conn, 'UNSEEN'); if ($unseen_emails) { foreach ($unseen_emails as $email_id) { // 获取邮件标题与正文 $header = imap_headerinfo($conn, $email_id); $body = imap_fetchbody($conn, $email_id, 1); // 若邮件是HTML格式,可能需要调整参数为2 // 解析关键信息(需根据实际邮件模板调整正则规则) $job_title = $header->subject; preg_match('/公司名称:(.*)/', $body, $company_match); $company_name = $company_match[1] ?? '未知公司'; preg_match('/工作地点:(.*)/', $body, $location_match); $job_location = $location_match[1] ?? '未知地点'; preg_match('/职位描述:(.*)/s', $body, $desc_match); $job_content = $desc_match[1] ?? ''; // 创建职位发布(需确认主题对应的自定义文章类型,比如多数求职主题用job_listing) $job_post_args = array( 'post_title' => wp_strip_all_tags($job_title), 'post_content' => $job_content, 'post_status' => 'publish', // 可改为draft先审核 'post_type' => 'job_listing', ); $post_id = wp_insert_post($job_post_args); if ($post_id) { // 设置主题所需的自定义字段(需对照主题文档的字段名) update_post_meta($post_id, '_company_name', $company_name); update_post_meta($post_id, '_job_location', $job_location); // 标记邮件为已读 imap_setflag_full($conn, $email_id, '\\Seen'); } } } imap_close($conn);
- 定时执行脚本:利用WordPress的WP-Cron功能,设置定时任务(比如每小时执行一次),自动触发解析逻辑。可通过插件(如WP Crontrol)可视化配置,或添加代码到
functions.php:
// 添加定时任务 add_action('wp', 'register_email_parse_cron'); function register_email_parse_cron() { if (!wp_next_scheduled('parse_email_to_job_cron')) { wp_schedule_event(time(), 'hourly', 'parse_email_to_job_cron'); } } // 绑定任务到解析函数 add_action('parse_email_to_job_cron', 'your_parse_email_function_name');
方案二:免费IMAP插件+自定义钩子(简化版)
使用免费的IMAP邮件同步插件(如WP IMAP Sync)读取邮件,通过插件提供的钩子触发职位创建逻辑,无需从头写IMAP连接代码。
示例代码(添加到主题functions.php):
// 监听邮件同步完成事件 add_action('wp_imap_sync_after_fetch', 'parse_email_to_job_post', 10, 2); function parse_email_to_job_post($email_data, $mailbox) { // 从$email_data中提取信息 $job_title = $email_data['subject']; $body = $email_data['body']; // 解析字段逻辑同方案一 preg_match('/公司:(.*)/', $body, $company_match); $company = $company_match[1] ?? ''; // 创建职位发布 $post_args = array( 'post_title' => wp_strip_all_tags($job_title), 'post_content' => $body, 'post_status' => 'draft', 'post_type' => 'job_listing', ); $post_id = wp_insert_post($post_args); if ($post_id) { update_post_meta($post_id, '_company_name', $company); } }
注意事项
- 确认所选主题的自定义文章类型名称和自定义字段键名,可通过主题文档或使用工具(如Custom Post Type UI)查看。
- 要求发件人按照固定模板发送邮件(如包含「职位标题」「公司名称」等关键词),提升解析准确率。
- 邮箱密码不要硬编码,可通过WordPress的
update_option()存储,用get_option()获取,保障安全。
内容的提问来源于stack exchange,提问作者Amrita
相关产品推荐
相关产品推荐

