Hi everyone,
I would like to add a checkbox to my contact form 7 like this: [checkbox newsletter_subscribe default:1 "Subscribe to Newsletter?"]
I would like that the first name, last name and email address are sent to wysija (mailpoet) automatycally when user presses submit button.
I guess we can add a function to contact form 7 such as commented on this page http://wordpress.org/support/topic/contact-form-7-subscribe-to-wysiga-newsletter-on-submit?replies=8#post-4970543
But I'd like to sure sure I can update the plugins later without having to do the process all over again.
thanks in advance for your help,
PS: I can send a link to my website via private message is nesessary.
Hariprasad Vijayan answers:
Hello,
check this http://wpquestions.com/question/showChrono/id/8262
hope it will help you. please ask if you have any doubt in this.
artaudlemomo comments:
Hi Hariprasad,
thanks for your answer,
but in the link they never managed to make it work, and I still don't know what si going to happen if I add this function to contact form 7 and then later update the plugin.
on top of that I don't what to add (checkbox) to contact form 7 to trigger this function.
any help with that is more than welcome! :)
Hariprasad Vijayan comments:
Try following code in theme's function.php
<?php
function wysija_contactform7_subscribe($cfdata)
{
$formdata = $cfdata->posted_data;
/*
if you use different name/id attribute for CF7
please change 'your-name' and 'your-email'
*/
$user_name = $formdata['your-name'];
$user_email = $formdata['your-email'];
$newsletter_subscribe = $formdata['newsletter_subscribe'];
/*
change this according to your user list id you want this user to subscribe,
*/
$listID = array( 'my_list_ID_1', 'my_list_ID_2' );
$userData=array(
'email' => $user_email,
'firstname' => $user_name
);
$data=array(
'user' => $userData,
'user_list' => array( 'list_ids'=> $listID )
);
if(!empty($newsletter_subscribe)) // Checking checkbox is checked or not
{
$userHelper=&WYSIJA::get('user','helper');
$userHelper->addSubscriber($data);
}
}
add_action('wpcf7_mail_sent', 'wysija_contactform7_subscribe', 1);
?>
Let me know if you have any trouble.
Hariprasad Vijayan comments:
Don't add it in plugin files. Add it in function.php of theme. Then you can update plugins.
artaudlemomo comments:
Ok I've added this code to my function.php in my child theme but I get an error.
I did it this way, i'm must i've done it wrong somewhere: <?php
function wysija_contactform7_subscribe($cfdata)
{
$formdata = $cfdata->posted_data;
/*
if you use different name/id attribute for CF7
please change 'your-name' and 'your-email'
*/
$user_name = $formdata['your-name'];
$user_email = $formdata['your-email'];
$newsletter_subscribe = $formdata['newsletter_subscribe'];
/*
change this according to your user list id you want this user to subscribe,
*/
$listID = array( 'my_list_ID_1', 'my_list_ID_2' );
$userData=array(
'email' => $user_email,
'firstname' => $user_name
);
$data=array(
'user' => $userData,
'user_list' => array( 'list_ids'=> $listID )
);
if(!empty($newsletter_subscribe)) // Checking checkbox is checked or not
{
$userHelper=&WYSIJA::get('user','helper');
$userHelper->addSubscriber($data);
}
}
add_action('wpcf7_mail_sent', 'wysija_contactform7_subscribe', 1);
?>
/*
*
* Dante Functions - Child Theme
* ------------------------------------------------
* These functions will override the parent theme
* functions. We have provided some examples below.
*
*
*/
// OVERWRITE PAGE BUILDER ASSETS
// function spb_regsiter_assets() {
// require_once( get_stylesheet_directory_uri() . '/default.php' );
// }
// if (is_admin()) {
// add_action('admin_init', 'spb_regsiter_assets', 2);
// }
// if (!is_admin()) {
// add_action('wp', 'spb_regsiter_assets', 2);
// }
?>
artaudlemomo comments:
So for those looking for an answer, this code in my child theme function.php did the tricked, thanks to Hariprasad:
function wysija_contactform7_subscribe($cfdata)
{
$formdata = $cfdata->posted_data;
/*
if you use different name/id attribute for CF7
please change 'your-name' and 'your-email'
*/
$user_name = $formdata['your-first-name'];
$last_name = $formdata['your-last-name'];
$user_email = $formdata['your-email'];
$newsletter_subscribe = $formdata['newsletter_subscribe'];
/*
change this according to your user list id you want this user to subscribe,
*/
$listID = array( 'my_list_ID_1', 'my_list_ID_2' );
$userData=array(
'email' => $user_email,
'firstname' => $user_name,
'lastname' => $last_name
);
$data=array(
'user' => $userData,
'user_list' => array( 'list_ids'=> $listID )
);
if(!empty($newsletter_subscribe)) // Checking checkbox is checked or not
{
$userHelper=&WYSIJA::get('user','helper');
$userHelper->addSubscriber($data);
}
}
add_action('wpcf7_mail_sent', 'wysija_contactform7_subscribe', 2);
hope this helps.
Just Me answers:
You are almost there with @Hariprasad 's code.
<?php and ?>
come in pairs. You have two times ?>
now without a <?php
between them, that is causing an error.
Either remove the <?php and ?>
from @Harisprasad's code or include an addition <?php after his ?>