繁体   English   中英

Contact Form 7 在输入中检索 $_SESSION

[英]Contact Form 7 retrive $_SESSION in a input

我需要在一个输入值中插入,该值来自 $ _SESSION,在谷歌上搜索我发现这个关于 cookies:

职能:

function sb_cf7_cookie($atts){
    extract(shortcode_atts(array(
        'key' => -1,
    ), $atts));

    if($key == -1) return '';
    $val = '';

    if( isset( $_COOKIE[$key] ) ){
        $val = $_COOKIE[$key];
    }

    return $val;
}
add_shortcode('SB_CF7_COOKIE', 'sb_cf7_cookie');

在 cf7 中:

[dynamichidden field-name "SB_CF7_COOKIE key='COOKIE_NAME'"]

如何用 $ _SESSION做这个?

这是我的$_SESSION代码

function dd_register_session(){
    if (!session_id()) {
        session_start();
        if($_GET['r']){
            $_SESSION['referrer']=$_GET['r'];
        }
    }
}
add_action('after_setup_theme','dd_register_session', 1);


add_action('wp_logout', 'end_session');
add_action('wp_login', 'end_session');
add_action('end_session_action', 'end_session');

function end_session() {
    session_destroy ();
}

这是一种通过滚动您自己的表单标记来执行此操作的方法。 将此添加到您的主题功能中。php

要使用它,表单标签名称将是 session 变量的名称。 所以,如果你正在寻找$_SESSION['referrer']那么表单标签名称应该是referrer

所以联系表格中的表格标签将是[session_var referrer]

在 email 中,您可以输入 [referrer]。

add_action('wpcf7_init', function (){
    wpcf7_add_form_tag( 'session_var' , 'cf7_session_variable_callback', array('name-attr' => true) );
}); 
function cf7_session_variable_callback($tag){
  $tag = new WPCF7_FormTag( $tag );
  $value = (!empty($_SESSION[$tag->name])) ? $_SESSION[$tag->name] : 'not set';
  $output = '<input type="hidden" name="'.$tag->name.'" value="'.$value.'">';
  return $output;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM