【发布时间】:2021-12-08 12:06:20
【问题描述】:
我需要通过联系表格收集数据并跟踪客户推荐。我正在为表单创建一个标签,但只有在包含partner的引荐发生转换时才需要填写它。
我的代码
// Original Referrer
function wpshore_set_session_values()
{
if (!session_id())
{
session_start();
}
if (!isset($_SESSION['OriginalRef']))
{
$_SESSION['OriginalRef'] = $_SERVER['HTTP_REFERER'];
}
if (!isset($_SESSION['LandingPage']))
{
$_SESSION['LandingPage'] = $_SERVER["REQUEST_URI"];
}
}
add_action('init', 'wpshore_set_session_values');
///
function getRefererPage3( $form_tag ){
$partner = array (
'/partner/',
);
$parts = parse_url($_SERVER['HTTP_REFERER'];
if (!empty($parts['path']) || in_array($parts['path'], $partner)){ //this row. I doubt how it should be
if ( $form_tag['name'] == 'referer-page3' ) {
$form_tag['values'][] = $_SESSION['LandingPage'];
}
}
return $form_tag;
}
if ( !is_admin() ) {
add_filter( 'wpcf7_form_tag', 'getRefererPage3' );
}
【问题讨论】:
-
你的问题有点不清楚。您对会话的使用也会给您带来问题。
-
@HowardE 我标记了一条我怀疑的行。我只想在原始链接有
partner时获取值 -
$parts['path']是 完整 路径,所以除非在引荐来源网址中只是/partner/而没有别的,否则你不会找到与in_array的匹配项。如果您不需要检查多个可能的字符串,请改为进行简单的字符串搜索。 -
@CBroe 你能告诉我
simple string search instead是什么意思吗?你的意思是这样的if (strpos($parts, 'partner') !== true) { -
我只是在谈论检查一个字符串是否包含另一个。 (如果你还不知道如何在 PHP 中做到这一点,请研究一下。)
标签: php wordpress contact-form