本文约 3,473 字,预计阅读 9 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:职位发出去了,简历却散落在三个邮箱里
企业自建招聘站(尤其是中小企业、园区、行业协会)最常见的混乱是:HR 在后台发职位,求职者看到一个”联系我们”邮箱,简历附件发到公司公共邮箱、HR 私人邮箱、甚至微信里。三个月后想复盘”哪个渠道来的人质量高”,完全无从查起。
招聘站的本质是一条双向表单流程:一端是结构化的职位(有地点、薪资、职能、经验要求),另一端是结构化的投递(简历文件 + 关键字段)。两端都必须落库并且能关联,否则后续的一切筛选、统计、跟进都做不了。WordPress 生态里完成这件事最成熟的方案是 WP Job Manager,它本身就是专门为”前台投稿 + 后台审核 + 列表筛选”设计的。
原理分析:招聘站的四段流程
| 环节 | 参与者 | 关键需求 | 常见缺陷 |
|---|---|---|---|
| 职位发布 | HR | 字段固定、可预览、可过期 | 用文章代替,无结构化 |
| 职位列表 | 求职者 | 按职能/城市/薪资筛选 | 只有长列表,无筛选 |
| 简历投递 | 求职者 | 附件上传 + 少量字段 | 只留邮箱,无附件 |
| 筛选跟进 | HR | 后台可查、可标记状态 | 邮件里翻,无法协作 |
关键点是职位要有自动过期机制。招聘信息时效性极强,招到人了职位还挂着,求职者投了才发现岗位已关闭,这是最伤品牌的行为。WP Job Manager 自带过期逻辑,这也是它比”用文章发职位”强的地方。
保姆级实操
步骤 1:装插件并放置核心页面
装 WP Job Manager,启用后按向导创建三个页面:职位列表页(放 [jobs] 短代码)、发布职位页(放 [submit_job_form])、职位管理页(放 [job_dashboard])。这三个短代码就是整套系统的骨架。
步骤 2:配置发布方式
在”职位列表 → 设置”里决定是否需要前台登录、是否需要审核后发布。对内招(只发自己公司职位)建议关闭前台投稿,全部后台发布;对行业平台才开启前台投稿 + 审核。
步骤 3:加自定义字段
默认字段不够用,用 submit_job_form_fields 过滤器加薪资、经验要求等字段:
add_filter( 'submit_job_form_fields', function ( $fields ) {
$fields['job']['job_salary'] = array(
'label' => '薪资范围',
'type' => 'text',
'required' => false,
'placeholder' => '如 15k-25k · 13薪',
'priority' => 5,
);
$fields['job']['job_experience'] = array(
'label' => '经验要求',
'type' => 'select',
'required' => false,
'options' => array( '' => '不限', 'fresh' => '应届生', '1-3' => '1-3 年', '3-5' => '3-5 年', '5+' => '5 年以上' ),
'priority' => 6,
);
return $fields;
} );
字段组名 job 是默认分组,company 是另外一组(公司信息)。加完字段后记得在前台模板里用 get_post_meta( get_the_ID(), '_job_salary', true ) 取值输出。
步骤 4:简历投递的两种方式
方式一:职位里填 application 邮箱,投递走邮件(简单但不可查);方式二:装官方的 WP Job Manager – Applications 扩展,投递成为后台可管理的条目,支持附件、状态标记和备注。只要招聘量超过每月 20 份简历,就必须用方式二。
步骤 5:附件上传的类型与大小限制
WordPress 默认不允许上传 doc / pdf 之外的很多格式,而简历常见为 PDF 和 docx。用 upload_mimes 过滤器放开,并限制大小:
add_filter( 'upload_mimes', function ( $mimes ) {
$mimes['pdf'] = 'application/pdf';
$mimes['doc'] = 'application/msword';
$mimes['docx'] = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
return $mimes;
} );
add_filter( 'upload_size_limit', function () {
return 5 * 1024 * 1024; // 5MB
} );
同时把上传目录设为不可执行 PHP(很多主机默认已配),避免上传漏洞。
步骤 6:投递成功后立刻通知双方
挂 job_manager_job_submitted 处理职位发布,投递侧则用 Applications 扩展自带的通知。岗位侧示例:
add_action( 'job_manager_job_submitted', function ( $job_id ) {
$title = get_the_title( $job_id );
$company = get_post_meta( $job_id, '_company_name', true );
wp_mail(
get_option( 'admin_email' ),
'新职位待审核:' . $title,
sprintf( "职位:%s\n公司:%s\n后台:%s", $title, $company, admin_url( 'post.php?post=' . $job_id . '&action=edit' ) )
);
} );
步骤 7:反垃圾
前台投稿必须加验证码(reCAPTCHA 或 hCaptcha)和”审核后发布”。另外把职位过期天数设为 30 天,到期自动转为草稿,避免僵尸职位堆积拉低整站质量。
常见踩坑
- 用普通文章发职位:没有过期机制,也没有职能/城市字段,求职者无法筛选。
- 投递只留邮箱:简历散落各处,无法统计与协作,也无法标记面试状态。
- 没放开 docx 上传类型:求职者上传失败直接放弃投递,且不会告诉你原因。
- 附件不限制大小:收到 50MB 的作品集压缩包,把主机磁盘塞满。
- 前台投稿不加验证码:招聘站是垃圾外链的重灾区,一周能收几百条虚假职位。
- 忘了过滤上传目录的 PHP 执行:上传漏洞会导致整站被控制,务必确认
uploads目录不解析 PHP。 - 案例:某产业园招聘站的”简历黑洞”:该站 20 多家企业发布职位,投递统一走一个公共邮箱,半年攒了 1400 封简历邮件,HR 只能靠搜索找人,重复联系、漏联系频发。改造为 Applications 扩展后,投递变成后台条目,可按职位筛选、标记”待筛选/面试/录用”,招聘周期平均缩短 9 天。
总结
招聘站是否合格,看三个指标:职位是否 100% 带结构化字段(城市、职能、薪资)、投递是否 100% 落库可查、HR 是否能在后台标记跟进状态。行动清单:先用 WP Job Manager 建三个核心页面,再用 submit_job_form_fields 补齐薪资与经验字段,然后装 Applications 扩展让投递落库并放开 docx 上传,最后加验证码、审核机制和 30 天自动过期。这套流程跑通后,招聘站才真正替代掉邮箱。投递表单的邮件通知要配好认证,见 外贸站邮件营销 EDM 接入;如果站点还要承载商家入驻与付费,可参考 黄页商家目录站。
