【问题标题】:Get original URL referer with the condition获取具有条件的原始 URL 引用
【发布时间】: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


【解决方案1】:

我发现了我的问题。也许这个解决方案将来会对任何人有所帮助。

function getRefererPage3( $form_tag ){  
    if (strpos($_SESSION['LandingPage'], 'partner') !== false) { 
        if ( $form_tag['name'] == 'referer-page3 ) {    
        $form_tag['values'][] = $_SESSION['LandingPage'];
    }
    }
    return $form_tag;
    }
   if ( !is_admin() ) {
    add_filter( 'wpcf7_form_tag', 'getRefererPage3' );
    }

【讨论】:

    猜你喜欢
    • 2010-12-24
    • 2018-02-09
    • 2010-10-21
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多