在联系人表单7邮件正文中添加自定义变量

时间:2018-11-30 作者:Mohit Bumb

我为我的用户设置了cookie,让他们知道他们来自哪个网站,我希望当用户联系我们时,他们的消息也会随cookie一起出现。

因此,我创建了一个新的短代码,并在邮件部分添加了它,但它直接发送短代码,而不是返回值

代码:

function my_shortcode( $atts ) {
   return isset($_COOKIE[\'my_source\']) ? $_COOKIE[\'my_source\'] : \'\' ;
}
add_shortcode( \'my-source\', \'my_shortcode\' );

Message body in contact form 7 :

Name : [your-name]
Email : [your-email]
Phone : [form-tel]
My Source : [my-source]

Email I Received :

Name : Mohit Bumb
Email : [email protected]
Phone : 19191919191
My Source : [my-source]

4 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

你应该这样做:

add_action( \'wpcf7_init\', \'custom_add_form_tag_my_source\' );

function custom_add_form_tag_my_source() {
  // "my-source" is the type of the form-tag
  wpcf7_add_form_tag( \'my-source\', \'custom_my_source_form_tag_handler\' );
}

function custom_my_source_form_tag_handler( $tag ) {
  return isset( $_COOKIE[\'my_source\'] ) ? $_COOKIE[\'my_source\'] : \'\';
}
请参见documentation 了解更多详细信息。

或者,您也可以尝试以下方法来解析常规短代码:

add_filter( \'wpcf7_mail_components\', function( $components ){
  $components[\'body\'] = do_shortcode( $components[\'body\'] );
  return $components;
} );

SO网友:lalo

使用过滤器“wpcf7\\u special\\u mail\\u tags”

在这个例子中,我的标签是“锦标赛”

/**
 * A tag to be used in "Mail" section so the user receives the special tag
 * [tournaments]
 */
add_filter(\'wpcf7_special_mail_tags\', \'wpcf7_tag_tournament\', 10, 3);
function wpcf7_tag_tournament($output, $name, $html)
{
    $name = preg_replace(\'/^wpcf7\\./\', \'_\', $name); // for back-compat

    $submission = WPCF7_Submission::get_instance();

    if (! $submission) {
        return $output;
    }

    if (\'tournaments\' == $name) {
        return $submission->get_posted_data("tournaments");
    }

    return $output;
}

SO网友:lalo

我在这里解决并发布了我的答案:

在Wordpress中的表单7中添加自定义表单标签(也可以通过电子邮件发送)

https://stackoverflow.com/questions/53754577/how-to-make-contact-form-7-custom-field/

代码

https://gist.github.com/eduardoarandah/83cad9227bc0ab13bf845ab14f2c4dad

SO网友:armin

我迟到了,但在此场景中使用特殊标记

// Hook for additional special mail tag
add_filter( \'wpcf7_special_mail_tags\', \'wti_special_mail_tag\', 20, 3 );
function wti_special_mail_tag( $output, $name, $html )
{
   $name = preg_replace( \'/^wpcf7\\./\', \'_\', $name );
   if ( \'_my_cookie\' == $name ) {
       $output = isset( $_COOKIE[\'my_source\'] ) ? $_COOKIE[\'my_source\'] : \'\';
   }
   return $output;
}
您可以使用[_my_cookie] 调用其值

相关推荐

redirect if shortcode exists

WordPress初学者。我试图检查用户请求的页面中是否存在短代码,如果存在,则在用户未登录时重定向。function redirect_to_home() { if (has_shortcode(get_the_content(), \'shortcode\')) { if(!is_admin() && !is_user_logged_in()) { //redirect exit(); }