Version Description
- Fix: Multiple consent forms per page support
- Fix: WP Forms checkbox field compatibility
- Tweak: AMP consent geolocation support
Download this release
Release Info
Developer | dfactory |
Plugin | iubenda Cookie Solution for GDPR |
Version | 2.3.0 |
Comparing to | |
See all releases |
Code changes from version 2.2.0 to 2.3.0
- includes/amp.php +14 -3
- includes/forms.php +9 -0
- iubenda_cookie_solution.php +3 -3
- js/frontend.js +174 -137
- readme.txt +42 -20
includes/amp.php
CHANGED
@@ -39,10 +39,21 @@ class iubenda_AMP {
|
|
39 |
echo '
|
40 |
<script async custom-element="amp-consent" src="https://cdn.ampproject.org/v0/amp-consent-latest.js"></script>
|
41 |
<script async custom-element="amp-iframe" src="https://cdn.ampproject.org/v0/amp-iframe-latest.js"></script>';
|
42 |
-
|
43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
<script async custom-element="amp-geo" src="https://cdn.ampproject.org/v0/amp-geo-0.1.js"></script>';
|
45 |
-
|
|
|
46 |
// CSS style
|
47 |
echo '
|
48 |
<style amp-custom>
|
39 |
echo '
|
40 |
<script async custom-element="amp-consent" src="https://cdn.ampproject.org/v0/amp-consent-latest.js"></script>
|
41 |
<script async custom-element="amp-iframe" src="https://cdn.ampproject.org/v0/amp-iframe-latest.js"></script>';
|
42 |
+
|
43 |
+
// optional geo support
|
44 |
+
if ( iubenda()->multilang && ! empty( iubenda()->lang_current ) ) {
|
45 |
+
$code = iubenda()->options['cs']['code_' . iubenda()->lang_current];
|
46 |
+
} else {
|
47 |
+
$code = iubenda()->options['cs']['code_default'];
|
48 |
+
}
|
49 |
+
|
50 |
+
$configuration_raw = iubenda()->parse_configuration( $code );
|
51 |
+
|
52 |
+
if ( isset( $configuration_raw['gdprAppliesGlobally'] ) && ! $configuration_raw['gdprAppliesGlobally'] ) {
|
53 |
+
echo '
|
54 |
<script async custom-element="amp-geo" src="https://cdn.ampproject.org/v0/amp-geo-0.1.js"></script>';
|
55 |
+
}
|
56 |
+
|
57 |
// CSS style
|
58 |
echo '
|
59 |
<style amp-custom>
|
includes/forms.php
CHANGED
@@ -610,6 +610,15 @@ class iubenda_Forms {
|
|
610 |
);
|
611 |
}
|
612 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
613 |
default :
|
614 |
$formdata['form_fields'][] = array(
|
615 |
'id' => $field['id'],
|
610 |
);
|
611 |
}
|
612 |
break;
|
613 |
+
// fix multiple choice checkbox
|
614 |
+
case 'checkbox' :
|
615 |
+
$formdata['form_fields'][] = array(
|
616 |
+
'id' => $field['id'],
|
617 |
+
'name' => 'wpforms[fields][' . $index . '][]',
|
618 |
+
'type' => $field['type'],
|
619 |
+
'label' => $field['label']
|
620 |
+
);
|
621 |
+
break;
|
622 |
default :
|
623 |
$formdata['form_fields'][] = array(
|
624 |
'id' => $field['id'],
|
iubenda_cookie_solution.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Cookie and Consent Solution for the GDPR & ePrivacy
|
4 |
Plugin URI: https://www.iubenda.com
|
5 |
Description: An All-in-One approach developed by iubenda, which includes functionalities of two powerful solutions that help to make your website GDPR and ePrivacy compliant.
|
6 |
-
Version: 2.
|
7 |
Author: iubenda
|
8 |
Author URI: https://www.iubenda.com
|
9 |
License: MIT License
|
@@ -32,7 +32,7 @@ define( 'IUB_DEBUG', false );
|
|
32 |
* iubenda final class.
|
33 |
*
|
34 |
* @class iubenda
|
35 |
-
* @version 2.
|
36 |
*/
|
37 |
class iubenda {
|
38 |
|
@@ -62,7 +62,7 @@ class iubenda {
|
|
62 |
)
|
63 |
);
|
64 |
public $base_url;
|
65 |
-
public $version = '2.
|
66 |
public $activation = array(
|
67 |
'update_version' => 0,
|
68 |
'update_notice' => true,
|
3 |
Plugin Name: Cookie and Consent Solution for the GDPR & ePrivacy
|
4 |
Plugin URI: https://www.iubenda.com
|
5 |
Description: An All-in-One approach developed by iubenda, which includes functionalities of two powerful solutions that help to make your website GDPR and ePrivacy compliant.
|
6 |
+
Version: 2.3.0
|
7 |
Author: iubenda
|
8 |
Author URI: https://www.iubenda.com
|
9 |
License: MIT License
|
32 |
* iubenda final class.
|
33 |
*
|
34 |
* @class iubenda
|
35 |
+
* @version 2.3.0
|
36 |
*/
|
37 |
class iubenda {
|
38 |
|
62 |
)
|
63 |
);
|
64 |
public $base_url;
|
65 |
+
public $version = '2.3.0';
|
66 |
public $activation = array(
|
67 |
'update_version' => 0,
|
68 |
'update_notice' => true,
|
js/frontend.js
CHANGED
@@ -1,151 +1,188 @@
|
|
1 |
( function ( $ ) {
|
2 |
|
3 |
$( document ).ready( function () {
|
4 |
-
|
5 |
-
var
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
}
|
35 |
-
};
|
36 |
-
|
37 |
-
// handle ajax submit
|
38 |
-
$( htmlFormContainer ).on( 'checkout_place_order', function( e ) {
|
39 |
-
_iub.cons.sendData();
|
40 |
-
// don't send before page refresh
|
41 |
-
// on succcessfull submit it will be sent automatically
|
42 |
-
// _iub.cons.sendFromLocalStorage();
|
43 |
-
} );
|
44 |
-
}
|
45 |
-
|
46 |
-
break;
|
47 |
-
|
48 |
-
// WordPress Comment Form
|
49 |
-
case 'wp_comment_form' :
|
50 |
-
var htmlFormContainer = $( '#commentform' );
|
51 |
-
|
52 |
-
// form exists, let's use it
|
53 |
-
if ( htmlFormContainer.length > 0 ) {
|
54 |
-
// adjust submit element id
|
55 |
-
var submitElement = document.getElementById( htmlFormContainer.attr( 'id' ) ).querySelectorAll( 'input[type=submit]' )[0];
|
56 |
-
|
57 |
-
/* id="submit" override
|
58 |
-
if ( typeof submitElement !== 'undefined' && submitElement.name == 'submit' ) {
|
59 |
-
submitElement.id = 'wp-comment-submit';
|
60 |
-
submitElement.name = 'wp-comment-submit';
|
61 |
-
}
|
62 |
-
*/
|
63 |
-
|
64 |
-
// setup vars
|
65 |
-
formArgs = {
|
66 |
-
submitElement: submitElement,
|
67 |
-
form: {
|
68 |
-
selector: document.getElementById( htmlFormContainer.attr( 'id' ) ),
|
69 |
-
map: form.form.map
|
70 |
-
}
|
71 |
-
};
|
72 |
-
}
|
73 |
-
|
74 |
-
break;
|
75 |
-
|
76 |
-
// Contact Form 7
|
77 |
-
case 'wpcf7' :
|
78 |
-
// var regex = new RegExp( '^wpcf7-f([0-9]*)-' );
|
79 |
-
var htmlFormContainer = $( 'div[id^="wpcf7-f' + id + '-"]' );
|
80 |
-
|
81 |
-
// form exists, let's use it
|
82 |
-
if ( htmlFormContainer.length > 0 ) {
|
83 |
-
// setup vars
|
84 |
-
formArgs = {
|
85 |
-
// submitElement: document.getElementById( htmlFormContainer.attr( 'id' ) ).getElementsByClassName( 'wpcf7-submit' )[0],
|
86 |
-
submitElement: null,
|
87 |
-
form: {
|
88 |
-
selector: document.getElementById( htmlFormContainer.attr( 'id' ) ).getElementsByClassName( 'wpcf7-form' )[0],
|
89 |
-
map: form.form.map
|
90 |
-
}
|
91 |
-
};
|
92 |
-
|
93 |
-
// handle ajax submit
|
94 |
-
$( document ).on( 'wpcf7mailsent', formArgs.form.selector, function( e ) {
|
95 |
-
_iub.cons.sendData();
|
96 |
-
_iub.cons.sendFromLocalStorage();
|
97 |
-
// console.log( 'test' );
|
98 |
-
} );
|
99 |
-
|
100 |
-
};
|
101 |
-
|
102 |
-
break;
|
103 |
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
}
|
119 |
-
};
|
120 |
-
|
121 |
-
// handle ajax submit
|
122 |
-
$( document ).on( 'wpformsAjaxSubmitSuccess', formArgs.form.selector, function( e ) {
|
123 |
-
_iub.cons.sendData();
|
124 |
-
_iub.cons.sendFromLocalStorage();
|
125 |
-
// console.log( 'test' );
|
126 |
-
} );
|
127 |
-
};
|
128 |
-
|
129 |
-
break;
|
130 |
-
}
|
131 |
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
|
142 |
-
|
143 |
-
_iub.cons_instructions.push( [ 'load', formArgs ] );
|
144 |
}
|
145 |
} );
|
146 |
}
|
147 |
-
}
|
148 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
} );
|
150 |
|
151 |
} )( jQuery );
|
1 |
( function ( $ ) {
|
2 |
|
3 |
$( document ).ready( function () {
|
4 |
+
|
5 |
+
var iubendaConsentSolution = new function () {
|
6 |
+
var _this = this;
|
7 |
+
|
8 |
+
// parse args
|
9 |
+
var args = $.parseJSON( iubForms );
|
10 |
+
|
11 |
+
// console.log( args );
|
12 |
+
|
13 |
+
// get forms
|
14 |
+
this.init = function () {
|
15 |
+
// loop though plugins
|
16 |
+
if ( $( args ).length > 0 ) {
|
17 |
+
$.each( args, function( source, forms ) {
|
18 |
+
// loop through forms
|
19 |
+
if ( $( forms ).length > 0 ) {
|
20 |
+
$.each( forms, function( id, form ) {
|
21 |
+
// console.log( form );
|
22 |
+
|
23 |
+
// get corresponding html form id
|
24 |
+
switch ( source ) {
|
25 |
+
|
26 |
+
// WooCommerce Checkout Form
|
27 |
+
case 'woocommerce' :
|
28 |
+
var htmlFormContainer = $( '.woocommerce-checkout' );
|
29 |
+
|
30 |
+
// form exists, let's use it
|
31 |
+
if ( htmlFormContainer.length > 0 ) {
|
32 |
+
// setup vars
|
33 |
+
formArgs = {
|
34 |
+
submitElement: null,
|
35 |
+
form: {
|
36 |
+
selector: document.querySelectorAll( 'form.woocommerce-checkout' )[0],
|
37 |
+
map: form.form.map
|
38 |
+
}
|
39 |
+
};
|
40 |
+
|
41 |
+
// handle ajax submit
|
42 |
+
$( htmlFormContainer ).on( 'checkout_place_order', function( e ) {
|
43 |
+
_this.submitForm( form, formArgs );
|
44 |
+
|
45 |
+
_iub.cons.sendData();
|
46 |
+
// don't send before page refresh
|
47 |
+
// on succcessfull submit it will be sent automatically
|
48 |
+
// _iub.cons.sendFromLocalStorage();
|
49 |
+
} );
|
50 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
|
52 |
+
break;
|
53 |
+
|
54 |
+
// WordPress Comment Form
|
55 |
+
case 'wp_comment_form' :
|
56 |
+
var htmlFormContainer = $( '#commentform' );
|
57 |
+
|
58 |
+
// form exists, let's use it
|
59 |
+
if ( htmlFormContainer.length > 0 ) {
|
60 |
+
// adjust submit element id
|
61 |
+
var submitElement = document.getElementById( htmlFormContainer.attr( 'id' ) ).querySelectorAll( 'input[type=submit]' )[0];
|
62 |
+
|
63 |
+
/* id="submit" override
|
64 |
+
if ( typeof submitElement !== 'undefined' && submitElement.name == 'submit' ) {
|
65 |
+
submitElement.id = 'wp-comment-submit';
|
66 |
+
submitElement.name = 'wp-comment-submit';
|
67 |
+
}
|
68 |
+
*/
|
69 |
+
|
70 |
+
// setup vars
|
71 |
+
formArgs = {
|
72 |
+
// submitElement: submitElement,
|
73 |
+
submitElement: null,
|
74 |
+
form: {
|
75 |
+
selector: document.getElementById( htmlFormContainer.attr( 'id' ) ),
|
76 |
+
map: form.form.map
|
77 |
+
}
|
78 |
+
};
|
79 |
+
|
80 |
+
$( submitElement ).on( 'click touchstart', function( e ) {
|
81 |
+
_this.submitForm( form, formArgs );
|
82 |
+
|
83 |
+
_iub.cons.sendData();
|
84 |
+
// don't send before page refresh
|
85 |
+
// on succcessfull submit it will be sent automatically
|
86 |
+
// _iub.cons.sendFromLocalStorage();
|
87 |
+
} );
|
88 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
|
90 |
+
break;
|
91 |
+
|
92 |
+
// Contact Form 7
|
93 |
+
case 'wpcf7' :
|
94 |
+
// var regex = new RegExp( '^wpcf7-f([0-9]*)-' );
|
95 |
+
var htmlFormContainer = $( 'div[id^="wpcf7-f' + id + '-"]' );
|
96 |
+
|
97 |
+
// form exists, let's use it
|
98 |
+
if ( htmlFormContainer.length > 0 ) {
|
99 |
+
var selector = document.getElementById( htmlFormContainer.attr( 'id' ) ).getElementsByClassName( 'wpcf7-form' )[0];
|
100 |
+
|
101 |
+
// handle ajax submit
|
102 |
+
$( document ).on( 'wpcf7mailsent', selector, function( e ) {
|
103 |
+
// setup vars
|
104 |
+
formArgs = {
|
105 |
+
// submitElement: document.getElementById( htmlFormContainer.attr( 'id' ) ).getElementsByClassName( 'wpcf7-submit' )[0],
|
106 |
+
submitElement: null,
|
107 |
+
form: {
|
108 |
+
selector: selector,
|
109 |
+
map: form.form.map
|
110 |
+
}
|
111 |
+
};
|
112 |
+
|
113 |
+
// send only if specific form has been submitted
|
114 |
+
if ( selector.parentElement.id == e.target.id ) {
|
115 |
+
_this.submitForm( form, formArgs );
|
116 |
+
|
117 |
+
_iub.cons.sendData();
|
118 |
+
_iub.cons.sendFromLocalStorage();
|
119 |
+
}
|
120 |
+
} );
|
121 |
+
|
122 |
+
};
|
123 |
+
|
124 |
+
break;
|
125 |
+
|
126 |
+
// WP Forms
|
127 |
+
case 'wpforms' :
|
128 |
+
var htmlFormContainer = $( 'div[id^="wpforms-' + id + '"]' );
|
129 |
+
|
130 |
+
// form exists, let's use it
|
131 |
+
if ( htmlFormContainer.length > 0 ) {
|
132 |
+
var selector = document.getElementById( 'wpforms-form-' + id );
|
133 |
+
var isAjax = $( '#wpforms-form-' + id ).hasClass( 'wpforms-ajax-form' );
|
134 |
+
|
135 |
+
// handle ajax submit
|
136 |
+
$( document ).on( 'wpformsAjaxSubmitSuccess', selector, function( e ) {
|
137 |
+
// setup vars
|
138 |
+
formArgs = {
|
139 |
+
submitElement: ( isAjax ? null : document.getElementById( 'wpforms-submit-' + id ) ),
|
140 |
+
form: {
|
141 |
+
selector: selector,
|
142 |
+
map: form.form.map
|
143 |
+
}
|
144 |
+
};
|
145 |
+
|
146 |
+
// send only if specific form has been submitted
|
147 |
+
if ( selector.id == e.target.id ) {
|
148 |
+
_this.submitForm( form, formArgs );
|
149 |
+
|
150 |
+
_iub.cons.sendData();
|
151 |
+
_iub.cons.sendFromLocalStorage();
|
152 |
+
}
|
153 |
+
} );
|
154 |
+
};
|
155 |
+
|
156 |
+
break;
|
157 |
+
}
|
158 |
+
|
159 |
+
// console.log( source );
|
160 |
|
161 |
+
} );
|
|
|
162 |
}
|
163 |
} );
|
164 |
}
|
165 |
+
};
|
166 |
+
|
167 |
+
// submit form
|
168 |
+
this.submitForm = function ( form, formArgs ) {
|
169 |
+
// push consent vars
|
170 |
+
if ( typeof form.consent !== 'undefined' && form.consent.legal_notices.length > 0 ) {
|
171 |
+
formArgs.consent = {};
|
172 |
+
formArgs.consent.legal_notices = form.consent.legal_notices;
|
173 |
+
}
|
174 |
+
|
175 |
+
console.log( formArgs );
|
176 |
+
|
177 |
+
// build form consent data
|
178 |
+
_iub.cons_instructions.push( [ 'load', formArgs ] );
|
179 |
+
};
|
180 |
+
|
181 |
+
};
|
182 |
+
|
183 |
+
// initialize
|
184 |
+
iubendaConsentSolution.init();
|
185 |
+
|
186 |
} );
|
187 |
|
188 |
} )( jQuery );
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: cookies, cookie law, cookie policy, cookie banner, privacy policy, cookie
|
|
5 |
Requires at least: 4.0
|
6 |
Requires PHP: 5.2.4
|
7 |
Tested up to: 5.3.2
|
8 |
-
Stable tag: 2.
|
9 |
License: MIT License
|
10 |
License URI: http://opensource.org/licenses/MIT
|
11 |
|
@@ -23,11 +23,14 @@ This plugin drastically reduces the need for direct interventions in the code of
|
|
23 |
|
24 |
* The plugin automatically inserts the iubenda code in the head of every page of the site
|
25 |
* Allows you to automatically or manually block scripts that can install cookies prior to consent, without the need of direct intervention on the code
|
|
|
26 |
* Asynchronously re-activates cookie scripts once consent is collected.
|
27 |
* Handles the display of the cookie banner and cookie policy, allowing you to fully customize the banner to match the look and colors of your site if needed
|
|
|
28 |
* Saves user preferences about the use of cookies and displays a clean page (without banner) to users who have already provided their consent
|
29 |
* Integrates with IAB’s [Transparency and Consent Framework](https://www.iubenda.com/en/help/7440-enable-preference-management-iab-framework#revenue) (TCF)
|
30 |
-
*
|
|
|
31 |
* Features an easy-to-use interface for entering custom scripts and iframes
|
32 |
* Detects bots/spiders and serves them a clean page so that your SEO efforts are never compromised
|
33 |
|
@@ -105,36 +108,53 @@ Our Cookie and Consent Solution plugin for WordPress simplifies and manages thes
|
|
105 |
|
106 |
== Installation ==
|
107 |
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
|
118 |
== Frequently Asked Questions ==
|
119 |
|
120 |
**Where can I find help?**
|
121 |
-
You can find a dedicated support forum thread here [Uservoice forum](
|
122 |
|
123 |
**Do you have more guidance, or a demo?**
|
124 |
-
|
|
|
|
|
125 |
|
126 |
**Bug reports**
|
127 |
-
The best way you can help us is by providing as much information as possible, including the use of wp_debug
|
128 |
-
We will be very happy to receive feedback here: [Uservoice forum](
|
129 |
|
130 |
== Screenshots ==
|
131 |
|
132 |
-
1.
|
133 |
-
2.
|
134 |
-
3.
|
|
|
|
|
|
|
135 |
|
136 |
== Changelog ==
|
137 |
|
|
|
|
|
|
|
|
|
|
|
138 |
= 2.2.0 =
|
139 |
* Fix: Undefined notice during plugin update
|
140 |
|
@@ -405,5 +425,7 @@ We will be very happy to receive feedback here: [Uservoice forum](http://support
|
|
405 |
|
406 |
== Upgrade Notice ==
|
407 |
|
408 |
-
= 2.
|
409 |
-
* Fix:
|
|
|
|
5 |
Requires at least: 4.0
|
6 |
Requires PHP: 5.2.4
|
7 |
Tested up to: 5.3.2
|
8 |
+
Stable tag: 2.3.0
|
9 |
License: MIT License
|
10 |
License URI: http://opensource.org/licenses/MIT
|
11 |
|
23 |
|
24 |
* The plugin automatically inserts the iubenda code in the head of every page of the site
|
25 |
* Allows you to automatically or manually block scripts that can install cookies prior to consent, without the need of direct intervention on the code
|
26 |
+
* Allows you to autodetect and limit prior-blocking and cookie consent requests only to users from the EU – where this is a legal requirement – while running cookies scripts normally in regions where you are still legally allowed to do so.
|
27 |
* Asynchronously re-activates cookie scripts once consent is collected.
|
28 |
* Handles the display of the cookie banner and cookie policy, allowing you to fully customize the banner to match the look and colors of your site if needed
|
29 |
+
* California Consumer Privacy Act [(CCPA) Support](https://www.iubenda.com/en/help/21165-ccpa-how-to-add-a-notice-of-collection-and-a-do-not-sell-link)
|
30 |
* Saves user preferences about the use of cookies and displays a clean page (without banner) to users who have already provided their consent
|
31 |
* Integrates with IAB’s [Transparency and Consent Framework](https://www.iubenda.com/en/help/7440-enable-preference-management-iab-framework#revenue) (TCF)
|
32 |
+
* Allows you to provide you users with granular, per-category preference control (e.g. basic functionalities, experience enhancement, targeting & advertising)
|
33 |
+
* Compatible with Google's Accelerated Mobile Pages (AMP)
|
34 |
* Features an easy-to-use interface for entering custom scripts and iframes
|
35 |
* Detects bots/spiders and serves them a clean page so that your SEO efforts are never compromised
|
36 |
|
108 |
|
109 |
== Installation ==
|
110 |
|
111 |
+
* Search in your WordPress plugins admin panel for “iubenda Cookie and Consent Solution”, install it;
|
112 |
+
* Once the plugin is installed and activated, go to the Admin Panel → iubenda menu where you can select either the Cookie Solution or Consent Solution (depending on which you’d like to set up first).
|
113 |
+
* **For the Cookie Solution**, you will be asked to paste your script into that field – the script is generated from your iubenda account dashboard when you activate the solution. For more information on how to activate the Cookie Solution, see this article (https://www.iubenda.com/en/help/1177-cookie-solution-getting-started#banner).
|
114 |
+
* At this point the plugin will begin to show your banner on which displays the legal text, the consent options and your cookie policy (link) to users who visit the site for the first time. No need for other configurations;
|
115 |
+
* Furthermore, the plugin automatically recognizes and blocks cookies that get installed via an extensive list of services such as the YouTube video player, social widgets (e.g the Facebook Like Box) etc. on your site. The full list is included in the “details” above.
|
116 |
+
* Important note: Scripts can only be automatically blocked when generated from the server side (therefore processed by PHP via WordPress). Scripts that are added to the page via Javascript after page load must be blocked manually. Thankfully, this is fairly easy to do via the Custom Scripts field in the plugin console. Simply enter the custom script or iframe sources you'd like to block within the field, and click on the save changes button. You can find details, examples and further information [here](https://www.iubenda.com/en/help/1215-cookie-solution-wordpress-plugin-installation-guide#blocking-custom-scripts).
|
117 |
+
* If you’d like to manually block a specific script using a manual “wrap” method, you can use the following:
|
118 |
+
`<!--IUB-COOKIE-BLOCK-START-->
|
119 |
+
<iframe src="...
|
120 |
+
<img src="...
|
121 |
+
<!--IUB-COOKIE-BLOCK-END-->`
|
122 |
+
* For elements installed directly within WordPress posts (as opposed to elements integrated at the template level – example footer.php) there are shortcodes available:
|
123 |
+
`[iub-cookie-policy]
|
124 |
+
[/iub-cookie-policy]`
|
125 |
+
* In case you’re querying WordPress via API, you can disable our plugin by using the iub_no_parse=true URL parameter, like this: www.example.com/api/get_recent_posts?iub_no_parse=true (http://www.example.com/api/get_recent_posts?iub_no_parse=true).
|
126 |
+
* **For the Consent Solution**, you will need to paste in your Consent Solution API key. Once you’ve activated the Consent Solution in your iubenda dashboard, you can find your public API key in your dashboard (https://www.iubenda.com/en/dashboard) at [Your website] > Consent Solution > Embed).
|
127 |
|
128 |
== Frequently Asked Questions ==
|
129 |
|
130 |
**Where can I find help?**
|
131 |
+
You can find a dedicated support forum thread here [Uservoice forum](https://support.iubenda.com/support/discussions/forums/42000118028) or we're happy to answer at info@iubenda.com.
|
132 |
|
133 |
**Do you have more guidance, or a demo?**
|
134 |
+
Here’s a [quick video](https://iubenda.wistia.com/medias/02ie8av6kt) on what the cookie banner looks like and how you can configure it. More details on how to fully set up the Cookie Solution for wordpress [here](https://www.iubenda.com/en/help/1215-cookie-solution-wordpress-plugin-installation-guide).
|
135 |
+
|
136 |
+
Here’s a [quick look](https://iubenda.wistia.com/medias/fsbr465bku) at the Consent Solution dashboard. More details on how to fully set up the Consent Solution for wordpress [here](https://www.iubenda.com/en/help/13083-consent-solution-wordpress-contact-form-7) .
|
137 |
|
138 |
**Bug reports**
|
139 |
+
The best way you can help us is by providing as much information as possible, including the use of [wp_debug](https://wordpress.org/support/article/debugging-in-wordpress/).
|
140 |
+
We will be very happy to receive feedback here: [Uservoice forum](https://support.iubenda.com/support/discussions/forums/42000115771)
|
141 |
|
142 |
== Screenshots ==
|
143 |
|
144 |
+
1. It's as simple as copy-pasting the code from iubenda into the plugin form.
|
145 |
+
2. Simply enter you API key and click on autodetect to see all forms eligible for mapping.
|
146 |
+
3. The visual configurator lets you fully customize the look and feel of your banner, wording, and consent collection options.
|
147 |
+
4. When clicking on the cookie policy link, the user gets a view of the entire cookie policy, where they ultimately can give their consent.
|
148 |
+
5. IAB Transparency and consent framework integrated.
|
149 |
+
6. IAB Transparency and consent framework integrated.
|
150 |
|
151 |
== Changelog ==
|
152 |
|
153 |
+
= 2.3.0 =
|
154 |
+
* Fix: Multiple consent forms per page support
|
155 |
+
* Fix: WP Forms checkbox field compatibility
|
156 |
+
* Tweak: AMP consent geolocation support
|
157 |
+
|
158 |
= 2.2.0 =
|
159 |
* Fix: Undefined notice during plugin update
|
160 |
|
425 |
|
426 |
== Upgrade Notice ==
|
427 |
|
428 |
+
= 2.3.0 =
|
429 |
+
* Fix: Multiple consent forms per page support
|
430 |
+
* Fix: WP Forms checkbox field compatibility
|
431 |
+
* Tweak: AMP consent geolocation support
|