You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中复用联系表单,需根据来源职位页动态修改表单页标题

实现WordPress职位页跳转联系表单时动态修改标题

嘿,这个需求其实挺常见的,核心就是要把职位页的信息传递到联系表单页,我给你两种靠谱的实现思路,你可以根据自己的场景选:

方法一:用GET参数传递职位信息(简单易上手)

这种方法直接在跳转链接里带上职位标题/ID,表单页读取这个参数来动态修改标题,优点是不需要额外配置,直观易懂。

步骤1:修改职位页的跳转链接

在你的职位单页模板(比如single-job.php,如果是自定义文章类型的话)里,把原来指向联系表单的链接改成下面这样:

<a href="<?php echo esc_url(add_query_arg('job_title', urlencode(get_the_title()), get_permalink(get_page_by_path('contact')))); ?>">申请该职位</a>

解释一下:

  • add_query_arg用来给URL添加job_title参数,值是当前职位的标题(用urlencode处理特殊字符)
  • get_permalink(get_page_by_path('contact'))是获取你的联系表单页的固定链接,你也可以直接写表单页的URL,比如'https://your-site.com/contact/'

步骤2:在联系表单页动态生成标题

如果你用的是自定义页面模板(比如page-contact.php),直接在标题位置替换成下面的代码:

<?php
// 获取并解码GET参数里的职位标题
$referrer_job_title = isset($_GET['job_title']) ? urldecode($_GET['job_title']) : '';

// 决定显示哪个标题
if (!empty($referrer_job_title)) {
    $page_title = sprintf('申请职位:%s', $referrer_job_title);
} else {
    // 直接访问表单页时显示默认标题
    $page_title = get_the_title();
}

// 输出标题(记得用esc_html防止XSS)
echo '<h1>' . esc_html($page_title) . '</h1>';
?>

如果不想改模板,也可以用短代码实现:
在主题的functions.php里添加这段代码:

function dynamic_contact_form_title() {
    $referrer_job_title = isset($_GET['job_title']) ? urldecode($_GET['job_title']) : '';
    
    if (!empty($referrer_job_title)) {
        return '<h1>' . esc_html(sprintf('申请职位:%s', $referrer_job_title)) . '</h1>';
    } else {
        return '<h1>' . esc_html(get_the_title()) . '</h1>';
    }
}
add_shortcode('dynamic_contact_title', 'dynamic_contact_form_title');

然后在联系表单页的编辑器里,用[dynamic_contact_title]代替原来的标题即可。

方法二:用PHP Session传递(更隐蔽,不暴露URL参数)

如果不想让职位信息出现在URL里,可以用Session来存储,适合对隐私有要求的场景。

步骤1:开启WordPress的Session支持

WordPress默认没有开启Session,先在主题的functions.php里添加这段代码:

function wp_init_session() {
    if (!session_id()) {
        session_start();
    }
}
add_action('init', 'wp_init_session');

步骤2:在职位页存储职位信息到Session

在职位单页模板里,添加代码把当前职位的标题存入Session:

<?php
// 只在职位单页执行
if (is_singular('job')) { // 这里的'job'是你的职位自定义文章类型slug,记得改成自己的
    $_SESSION['referrer_job_title'] = get_the_title();
}
?>

步骤3:在联系表单页读取Session并生成标题

在联系表单页的模板里,添加这段代码处理标题:

<?php
$referrer_job_title = isset($_SESSION['referrer_job_title']) ? $_SESSION['referrer_job_title'] : '';

// 用完就销毁Session,避免下次访问还显示之前的职位
unset($_SESSION['referrer_job_title']);

if (!empty($referrer_job_title)) {
    $page_title = sprintf('申请职位:%s', $referrer_job_title);
} else {
    $page_title = get_the_title();
}

echo '<h1>' . esc_html($page_title) . '</h1>';
?>

额外小技巧:把职位信息同步到表单里

不管用哪种方法,你可能还希望用户提交的表单里能带上职位信息,方便后台查看。如果用的是Contact Form 7,直接添加一个隐藏字段就行:

[hidden job-title default:get job_title]

如果用Session方法,就改成:

[hidden job-title default:session referrer_job_title]

这样表单提交后,后台就能看到用户申请的是哪个职位啦。

内容的提问来源于stack exchange,提问作者maxkue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:45:07