=== Opt-In === Contributors: berginformatik Tags: opt-in, double-opt-in, cf7 Requires at least: 4.9.8 Tested up to: 5.9 License: GPLv3 Provides features and functions to create an opt-in or double-opt in with contact form 7 (cf7) and other form plugins. === Save contacts === To store your contacts, please install the additional plugin called bin contact. This plugin assists you installing all the necessary dependencies. === Opt-In Function ===
BinOptIn::optIn($postdata, [ 'opt_in_admin_message' => false, 'double_opt_in' => false, 'admin_unlock' => false, 'unlock_message' => false ]);* **opt_in_admin_message** (bool) Notify the site owner of any new contact, regardless of whether or not he has confirmed his e-mail address. Default false. * **double_opt_in** (bool) The contact must confirm the e-mail address by clicking on a confirmation link. Default false. * **admin_unlock** (bool) The site owner has to confirm every new contact by clicking on a confirmation link. This is useful if you want to show a list of contacts (like a committee or a list of supporters). Default false. * **unlock_message** (bool) This option allows you to specify whether the contact should receive a notification once the site owner has confirmed the committee subscription. Default false. * **mailchimp_opt_in** (bool) This option allows you to specify whether the contact will be forwarded to Mailchimp. Default false. === Accepted postdata === * **salutation** (int) Default empty. * 0 (Mister) * 1 (Miss) * 2 (Other) * **polite_form** (int) Default empty. * 0 (Personally) * 1 (Formally) * **language_of_correspondence** (int) Check this functions to see a list of all available languages: BinContact::formLanguage() and BinContact::formLanguageValue() * **name_suffix** (string) Default empty. * **first_name** (string) Default empty. * **last_name** (string) Default empty. * **designation** (string) Default empty. * **mobile** (string) Default empty. * **phone_private** (string) Default empty. * **phone_work** (string) Default empty. * **street_and_number** (string) Default empty. * **zip** (string) Default empty. * **city** (string) Default empty. * **country** (string) Default empty. * **website** (string) Default empty. * **facebook** (string) Default empty. * **twitter** (string) Default empty. * **instagram** (string) Default empty. * **flickr** (string) Default empty. * **linkedin** (string) Default empty. * **xing** (string) Default empty. * **youtube** (string) Default empty. * **socialmedia_other1** (string) Default empty. * **socialmedia_other2** (string) Default empty. * **socialmedia_other3** (string) Default empty. * **terms_and_conditions_accepted** (string) Default empty. * empty (Not filled) * no (No) * yes (Yes) * **privacy_policy_accepted** (string) Default empty. * empty (Not filled) * no (No) * yes (Yes) * **contact_group** (string) Comma seperated list of contact_group taxonomy terms or ID's. Default empty. === Integrate with Contact Form 7 === Bin Opt-In works best with contact form seven. To integrate it into your contact forms, you need to add custom code like this to your theme functions.php.
add_action('wpcf7_before_send_mail', 'bin_opt_in_contact');
function bin_opt_in_contact($cf7)
{
// Get current form id
$formId = $cf7->id;
// Array of form ids
$forms = [159, 454];
// Only apply to certain forms
if(in_array($formId, $forms))
{
// Dont do anything if class is missing
if(class_exists('BinOptIn'))
{
// At least, the email must be present
if(is_email($_POST['email']))
{
// map salutation
$salutationMap = [
'Frau' => 0,
'Madame' => 0,
'Mrs' => 0,
'Herr' => 1,
'Monsieur' => 1,
'Mr' => 1,
'*' => 2
];
// assign form data with corresponding meta fields
$postdata = [];
$postdata['email'] = sanitize_email($_POST['email']);
$postdata['first_name'] = sanitize_text_field($_POST['first_name']);
$postdata['last_name'] = sanitize_text_field($_POST['last_name']);
$postdata['salutation'] = $salutationMap[$_POST['salutation']];
$postdata['terms_and_conditions_accepted'] = isset($_POST['terms_and_conditions_accepted']) ? 'yes' : '';
// save contact
BinOptIn::optIn($postdata, [
'opt_in_admin_message' => false,
'double_opt_in' => false,
'admin_unlock' => false,
'unlock_message' => false
]);
}
}
}
}
=== Integrate with Contact Form 7 Multi-Step Pro ===
Save form data at every step by using the filter *wpcf7_validate*.
add_filter('wpcf7_validate', 'save_contact_step', 10, 2);
function save_contact_step($result, $tags)
{
// Get current form id
$formId = $_POST['_wpcf7'];
// Array of form ids
$forms = [159, 454];
// Only apply to certain forms
if(in_array($formId, $forms))
{
// Dont do anything if class is missing
if(class_exists('BinOptIn'))
{
// save contact info here
// BinOptIn::optIn()
}
}
return $result;
}
== Installation ==
1. Download, unzip and upload to your WordPress plugins directory
2. Activate the plugin within you WordPress Administration Backend
== Screenshots ==
1. Backend: Settings page
== Changelog ==
* Version 1.2.3
* Image embedding removed: not supported by gmail
* Translation corrections
* Version 1.2.2
* Minor bugfix
* Version 1.2.2
* Fix: fatal error if bin-contact is not installed
* Version 1.2.0
* New: Mailchimp integration
* New: Add default settings on plugin activate
* New: Text settings
* New: Change button color
* Fix: Wrong link to wpml translation page
* Fix: Wrong installation path of bin-contact plugin
* Fix: Missing hero background image
* Version 1.1.0
* New option for Social Share Buttons
* BinOptIn_UrlLinker removed
* Double-opt-in routing fix
* Show additional content on confirmation page
* Logo height setting added
* Image embed enhancements
* Attribute publicly_visible added
* Wpml-config file added
* More options for optIn
* Better email template management
* Version 1.0.1
* Backend text correction
* Conditional logic update
* Do not delete settings on plugin deactivate
* Version 1.0.0
* Initial release
== Upgrade Notice ==
Nothing here :)