Version Description
- Added shortcode for ad blocking detection action
- Few minor bug fixes, cosmetic changes and code improvements
Download this release
Release Info
Developer | spacetime |
Plugin | Ad Inserter – WordPress Ads Management with AdSense Header Integration |
Version | 2.3.17 |
Comparing to | |
See all releases |
Code changes from version 2.3.16 to 2.3.17
- ad-inserter.php +19 -6
- constants.php +1 -1
- css/ad-inserter.css +1 -1
- includes/js/ai-adb.js +36 -29
- includes/js/ai-adb.min.js +16 -15
- includes/preview.php +3 -2
- js/ad-inserter.js +1 -1
- readme.txt +56 -47
- settings.php +2 -1
ad-inserter.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
/*
|
4 |
Plugin Name: Ad Inserter
|
5 |
-
Version: 2.3.
|
6 |
Description: Ad management plugin with advanced advertising options to automatically insert ad codes on your website
|
7 |
Author: Igor Funa
|
8 |
Author URI: http://igorfuna.com/
|
@@ -13,6 +13,10 @@ Plugin URI: http://adinserter.pro/documentation
|
|
13 |
|
14 |
Change Log
|
15 |
|
|
|
|
|
|
|
|
|
16 |
Ad Inserter 2.3.16 - 2018-07-25
|
17 |
- Added option to insert block only when WP loop is currently active
|
18 |
- Added support for Better AMP plugin
|
@@ -1050,9 +1054,9 @@ function set_page_type () {
|
|
1050 |
elseif (is_feed()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_FEED;
|
1051 |
elseif (is_category()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_CATEGORY;
|
1052 |
elseif (is_archive() || (is_home () && !is_front_page ())) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_ARCHIVE;
|
|
|
1053 |
elseif (is_search()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_SEARCH;
|
1054 |
elseif (is_404()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_404;
|
1055 |
-
elseif (is_admin()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_ADMIN;
|
1056 |
|
1057 |
if (
|
1058 |
// AMP, Accelerated Mobile Pages
|
@@ -2084,12 +2088,14 @@ function ai_replace_js_data ($js) {
|
|
2084 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=3', '$("#ai-adb-status").text ("DETECTED - ACTION");', $js);
|
2085 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=4', 'jQuery("#ai-adb-status").text ("NOT DETECTED");', $js);
|
2086 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=5', '$("#ai-adb-status").text ("COOKIES DELETED");', $js);
|
|
|
2087 |
} else {
|
2088 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=1', '', $js);
|
2089 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=2', '', $js);
|
2090 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=3', '', $js);
|
2091 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=4', '{}', $js);
|
2092 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=5', '', $js);
|
|
|
2093 |
}
|
2094 |
}
|
2095 |
}
|
@@ -4593,11 +4599,15 @@ function ai_generate_extract (&$settings) {
|
|
4593 |
|
4594 |
$extract [AI_EXTRACT_USED_BLOCKS] = serialize ($active_blocks);
|
4595 |
|
4596 |
-
|
4597 |
-
|
|
|
|
|
4598 |
|
4599 |
-
|
4600 |
-
|
|
|
|
|
4601 |
|
4602 |
$extract [AI_EXTRACT_FEATURES] = array (
|
4603 |
AI_SERVER_SIDE_DETECTION => $ai_wp_data [AI_SERVER_SIDE_DETECTION],
|
@@ -6181,6 +6191,9 @@ function ai_process_shortcode (&$block, $atts) {
|
|
6181 |
case 'redirection':
|
6182 |
$ai_wp_data [AI_ADB_SHORTCODE_ACTION] = AI_ADB_ACTION_REDIRECTION;
|
6183 |
break;
|
|
|
|
|
|
|
6184 |
}
|
6185 |
return "";
|
6186 |
}
|
2 |
|
3 |
/*
|
4 |
Plugin Name: Ad Inserter
|
5 |
+
Version: 2.3.17
|
6 |
Description: Ad management plugin with advanced advertising options to automatically insert ad codes on your website
|
7 |
Author: Igor Funa
|
8 |
Author URI: http://igorfuna.com/
|
13 |
|
14 |
Change Log
|
15 |
|
16 |
+
Ad Inserter 2.3.17 - 2018-08-03
|
17 |
+
- Added shortcode for ad blocking detection action
|
18 |
+
- Few minor bug fixes, cosmetic changes and code improvements
|
19 |
+
|
20 |
Ad Inserter 2.3.16 - 2018-07-25
|
21 |
- Added option to insert block only when WP loop is currently active
|
22 |
- Added support for Better AMP plugin
|
1054 |
elseif (is_feed()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_FEED;
|
1055 |
elseif (is_category()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_CATEGORY;
|
1056 |
elseif (is_archive() || (is_home () && !is_front_page ())) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_ARCHIVE;
|
1057 |
+
elseif (is_admin()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_ADMIN; // Admin pages may also be search pages
|
1058 |
elseif (is_search()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_SEARCH;
|
1059 |
elseif (is_404()) $ai_wp_data [AI_WP_PAGE_TYPE] = AI_PT_404;
|
|
|
1060 |
|
1061 |
if (
|
1062 |
// AMP, Accelerated Mobile Pages
|
2088 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=3', '$("#ai-adb-status").text ("DETECTED - ACTION");', $js);
|
2089 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=4', 'jQuery("#ai-adb-status").text ("NOT DETECTED");', $js);
|
2090 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=5', '$("#ai-adb-status").text ("COOKIES DELETED");', $js);
|
2091 |
+
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=6', '$("#ai-adb-status").text ("DETECTED - NO ACTION");', $js);
|
2092 |
} else {
|
2093 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=1', '', $js);
|
2094 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=2', '', $js);
|
2095 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=3', '', $js);
|
2096 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=4', '{}', $js);
|
2097 |
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=5', '', $js);
|
2098 |
+
$js = str_replace ('var AI_ADB_STATUS_MESSAGE=6', '', $js);
|
2099 |
}
|
2100 |
}
|
2101 |
}
|
4599 |
|
4600 |
$extract [AI_EXTRACT_USED_BLOCKS] = serialize ($active_blocks);
|
4601 |
|
4602 |
+
if (isset ($settings [AI_HEADER_OPTION_NAME])) {
|
4603 |
+
$obj->wp_options = $settings [AI_HEADER_OPTION_NAME];
|
4604 |
+
if ($obj->get_enable_manual () && $obj->get_detection_server_side()) $ai_wp_data [AI_SERVER_SIDE_DETECTION] = true;
|
4605 |
+
}
|
4606 |
|
4607 |
+
if (isset ($settings [AI_FOOTER_OPTION_NAME])) {
|
4608 |
+
$obj->wp_options = $settings [AI_FOOTER_OPTION_NAME];
|
4609 |
+
if ($obj->get_enable_manual () && $obj->get_detection_server_side()) $ai_wp_data [AI_SERVER_SIDE_DETECTION] = true;
|
4610 |
+
}
|
4611 |
|
4612 |
$extract [AI_EXTRACT_FEATURES] = array (
|
4613 |
AI_SERVER_SIDE_DETECTION => $ai_wp_data [AI_SERVER_SIDE_DETECTION],
|
6191 |
case 'redirection':
|
6192 |
$ai_wp_data [AI_ADB_SHORTCODE_ACTION] = AI_ADB_ACTION_REDIRECTION;
|
6193 |
break;
|
6194 |
+
case 'no-action':
|
6195 |
+
$ai_wp_data [AI_ADB_SHORTCODE_ACTION] = AI_ADB_ACTION_NONE;
|
6196 |
+
break;
|
6197 |
}
|
6198 |
return "";
|
6199 |
}
|
constants.php
CHANGED
@@ -26,7 +26,7 @@ if (!defined( 'AD_INSERTER_NAME'))
|
|
26 |
define ('AD_INSERTER_NAME', 'Ad Inserter');
|
27 |
|
28 |
if (!defined( 'AD_INSERTER_VERSION'))
|
29 |
-
define ('AD_INSERTER_VERSION', '2.3.
|
30 |
|
31 |
if (!defined ('AD_INSERTER_PLUGIN_BASENAME'))
|
32 |
define ('AD_INSERTER_PLUGIN_BASENAME', plugin_basename (__FILE__));
|
26 |
define ('AD_INSERTER_NAME', 'Ad Inserter');
|
27 |
|
28 |
if (!defined( 'AD_INSERTER_VERSION'))
|
29 |
+
define ('AD_INSERTER_VERSION', '2.3.17');
|
30 |
|
31 |
if (!defined ('AD_INSERTER_PLUGIN_BASENAME'))
|
32 |
define ('AD_INSERTER_PLUGIN_BASENAME', plugin_basename (__FILE__));
|
css/ad-inserter.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
#ai-data {
|
2 |
-
font-family: "2.3.
|
3 |
}
|
4 |
|
5 |
#blocked-warning {
|
1 |
#ai-data {
|
2 |
+
font-family: "2.3.17"; /* Used for version number of the file */
|
3 |
}
|
4 |
|
5 |
#blocked-warning {
|
includes/js/ai-adb.js
CHANGED
@@ -161,12 +161,12 @@ function ai_adb_process_content () {
|
|
161 |
(function ($) {
|
162 |
|
163 |
if (ai_adb_debugging) console.log ('');
|
164 |
-
if (ai_adb_debugging) console.log ("AI
|
165 |
|
166 |
$(".AI_ADB_CONTENT_CSS_BEGIN_CLASS").each (function () {
|
167 |
var ai_adb_parent = $(this).parent ();
|
168 |
|
169 |
-
if (ai_adb_debugging) console.log ("AI
|
170 |
|
171 |
var ai_adb_css = $(this).data ("css");
|
172 |
if (typeof ai_adb_css == "undefined") ai_adb_css = "display: none !important;";
|
@@ -174,7 +174,7 @@ function ai_adb_process_content () {
|
|
174 |
var ai_adb_selectors = $(this).data ("selectors");
|
175 |
if (typeof ai_adb_selectors == "undefined" || ai_adb_selectors == '') ai_adb_selectors = "p";
|
176 |
|
177 |
-
if (ai_adb_debugging) console.log ('AI
|
178 |
|
179 |
var ai_adb_action = false;
|
180 |
$(ai_adb_parent).find ('.AI_ADB_CONTENT_CSS_BEGIN_CLASS, ' + ai_adb_selectors).each (function () {
|
@@ -191,12 +191,12 @@ function ai_adb_process_content () {
|
|
191 |
$(".AI_ADB_CONTENT_DELETE_BEGIN_CLASS").each (function () {
|
192 |
var ai_adb_parent = $(this).parent ();
|
193 |
|
194 |
-
if (ai_adb_debugging) console.log ("AI
|
195 |
|
196 |
var ai_adb_selectors = $(this).data ("selectors");
|
197 |
if (typeof ai_adb_selectors == "undefined" || ai_adb_selectors == '') ai_adb_selectors = "p";
|
198 |
|
199 |
-
if (ai_adb_debugging) console.log ("AI
|
200 |
|
201 |
var ai_adb_action = false;
|
202 |
$(ai_adb_parent).find ('.AI_ADB_CONTENT_DELETE_BEGIN_CLASS, ' + ai_adb_selectors).each (function () {
|
@@ -212,7 +212,7 @@ function ai_adb_process_content () {
|
|
212 |
$(".AI_ADB_CONTENT_REPLACE_BEGIN_CLASS").each (function () {
|
213 |
var ai_adb_parent = $(this).parent ();
|
214 |
|
215 |
-
if (ai_adb_debugging) console.log ("AI
|
216 |
|
217 |
var ai_adb_text = $(this).data ("text");
|
218 |
if (typeof ai_adb_text == "undefined") ai_adb_text = "";
|
@@ -223,7 +223,7 @@ function ai_adb_process_content () {
|
|
223 |
var ai_adb_selectors = $(this).data ("selectors");
|
224 |
if (typeof ai_adb_selectors == "undefined" || ai_adb_selectors == '') ai_adb_selectors = "p";
|
225 |
|
226 |
-
if (ai_adb_debugging) console.log ("AI
|
227 |
|
228 |
var ai_adb_action = false;
|
229 |
$(ai_adb_parent).find ('.AI_ADB_CONTENT_REPLACE_BEGIN_CLASS, ' + ai_adb_selectors).each (function () {
|
@@ -246,7 +246,8 @@ function ai_adb_process_content () {
|
|
246 |
|
247 |
var ai_adb_detected = function(n) {
|
248 |
|
249 |
-
if (ai_adb_debugging) console.log (
|
|
|
250 |
|
251 |
if (!ai_adb_active) {
|
252 |
ai_adb_active = true;
|
@@ -254,7 +255,7 @@ var ai_adb_detected = function(n) {
|
|
254 |
(function ($) {
|
255 |
|
256 |
$(window).ready(function () {
|
257 |
-
if (ai_adb_debugging) console.log ("AI
|
258 |
|
259 |
$(".ai-adb-hide").each (function () {
|
260 |
$(this).css ({"display": "none", "visibility": "hidden"});
|
@@ -270,7 +271,7 @@ var ai_adb_detected = function(n) {
|
|
270 |
|
271 |
if (ai_adb_debugging) {
|
272 |
var debug_info = $(this).data ("ai-debug");
|
273 |
-
console.log ("AI
|
274 |
}
|
275 |
});
|
276 |
|
@@ -297,7 +298,7 @@ var ai_adb_detected = function(n) {
|
|
297 |
|
298 |
if (ai_adb_debugging) {
|
299 |
var debug_info = $(this).data ("ai-debug");
|
300 |
-
console.log ("AI
|
301 |
}
|
302 |
});
|
303 |
|
@@ -306,16 +307,16 @@ var ai_adb_detected = function(n) {
|
|
306 |
setTimeout (ai_adb_process_content, 10);
|
307 |
});
|
308 |
|
309 |
-
if (ai_adb_debugging) console.log ("AI
|
310 |
// $.removeCookie (ai_adb_pgv_cookie_name, {path: "/" });
|
311 |
|
312 |
if (ai_adb_page_views != 0) {
|
313 |
var ai_adb_page_view_counter = 1;
|
314 |
var cookie = $.cookie (ai_adb_pgv_cookie_name);
|
315 |
if (typeof cookie != "undefined") ai_adb_page_view_counter = parseInt (cookie) + 1;
|
316 |
-
if (ai_adb_debugging) console.log ("AI
|
317 |
if (ai_adb_page_view_counter < ai_adb_page_views) {
|
318 |
-
if (ai_adb_debugging) console.log ("AI
|
319 |
var d1 = ai_adb_page_view_counter;
|
320 |
var AI_ADB_STATUS_MESSAGE=1;
|
321 |
$.cookie (ai_adb_pgv_cookie_name, ai_adb_page_view_counter, {expires: 365, path: "/"});
|
@@ -325,19 +326,24 @@ var ai_adb_detected = function(n) {
|
|
325 |
|
326 |
if (ai_adb_message_cookie_lifetime != 0 && (ai_adb_action != 1 || !ai_adb_message_undismissible)) {
|
327 |
var cookie = $.cookie (ai_adb_act_cookie_name);
|
328 |
-
if (ai_adb_debugging) console.log ("AI
|
329 |
if (typeof cookie != "undefined" && cookie == "AI_CONST_AI_ADB_COOKIE_VALUE") {
|
330 |
-
if (ai_adb_debugging) console.log ("AI
|
331 |
var AI_ADB_STATUS_MESSAGE=2;
|
332 |
return;
|
333 |
}
|
334 |
|
335 |
-
else if (ai_adb_debugging) console.log ("AI
|
336 |
$.cookie (ai_adb_act_cookie_name, "AI_CONST_AI_ADB_COOKIE_VALUE", {expires: ai_adb_message_cookie_lifetime, path: "/"});
|
337 |
} else $.removeCookie (ai_adb_act_cookie_name, {path: "/" });
|
338 |
|
339 |
-
if (ai_adb_debugging) console.log ("AI
|
340 |
-
|
|
|
|
|
|
|
|
|
|
|
341 |
|
342 |
switch (ai_adb_action) {
|
343 |
case 1:
|
@@ -357,18 +363,18 @@ var ai_adb_detected = function(n) {
|
|
357 |
}
|
358 |
}
|
359 |
|
360 |
-
if (ai_adb_debugging) console.log ("AI
|
361 |
|
362 |
} else {
|
363 |
// $.removeCookie (ai_adb_act_cookie_name, {path: "/" });
|
364 |
}
|
365 |
|
366 |
-
if (ai_adb_debugging) console.log ("AI
|
367 |
$("body").prepend (ai_adb_overlay).prepend (ai_adb_message_window);
|
368 |
break;
|
369 |
case 2:
|
370 |
if (ai_adb_redirection_url != "") {
|
371 |
-
if (ai_adb_debugging) console.log ("AI
|
372 |
|
373 |
var redirect = true;
|
374 |
if (ai_adb_redirection_url.toLowerCase().substring (0, 4) == "http") {
|
@@ -386,11 +392,11 @@ var ai_adb_detected = function(n) {
|
|
386 |
|
387 |
window.location.replace (ai_adb_redirection_url)
|
388 |
} else {
|
389 |
-
if (ai_adb_debugging) console.log ("AI
|
390 |
|
391 |
}
|
392 |
} else {
|
393 |
-
if (ai_adb_debugging) console.log ("AI
|
394 |
jQuery.removeCookie (ai_adb_page_redirection_cookie_name, {path: "/"});
|
395 |
}
|
396 |
}
|
@@ -407,10 +413,11 @@ var ai_adb_detected = function(n) {
|
|
407 |
var ai_adb_undetected = function(n) {
|
408 |
ai_adb_counter ++;
|
409 |
|
410 |
-
if (ai_adb_debugging) console.log (
|
|
|
411 |
|
412 |
if (!ai_adb_active && ai_adb_counter == 3) {
|
413 |
-
if (ai_adb_debugging) console.log ("AI
|
414 |
|
415 |
var AI_ADB_STATUS_MESSAGE=4; // Check replacement code {}
|
416 |
|
@@ -424,7 +431,7 @@ var ai_adb_undetected = function(n) {
|
|
424 |
// if (redirected_page) {
|
425 |
// var cookie = jQuery.cookie (ai_adb_page_redirection_cookie_name);
|
426 |
// if (typeof cookie != "undefined" && cookie.toLowerCase().substring (0, 4) == "http") {
|
427 |
-
// if (ai_adb_debugging) console.log ("AI
|
428 |
// jQuery.removeCookie (ai_adb_page_redirection_cookie_name, {path: "/"});
|
429 |
// window.location.replace (cookie);
|
430 |
// }
|
@@ -470,12 +477,12 @@ jQuery (document).ready (function ($) {
|
|
470 |
var ai_adb_selector = ai_adb_selectors.split (",");
|
471 |
$.each (ai_adb_selector, function (i) {
|
472 |
|
473 |
-
if (ai_adb_debugging) console.log ("AI
|
474 |
|
475 |
if ($(ai_adb_selector [i]).length != 0) {
|
476 |
$(ai_adb_selector [i]).each (function (n) {
|
477 |
|
478 |
-
if (ai_adb_debugging) console.log ("AI
|
479 |
|
480 |
ai_adb_el_counter ++;
|
481 |
if ($(this).outerHeight () === 0) {
|
161 |
(function ($) {
|
162 |
|
163 |
if (ai_adb_debugging) console.log ('');
|
164 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING CONTENT PROCESSING");
|
165 |
|
166 |
$(".AI_ADB_CONTENT_CSS_BEGIN_CLASS").each (function () {
|
167 |
var ai_adb_parent = $(this).parent ();
|
168 |
|
169 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING parent", ai_adb_parent.prop ("tagName"), "id=\""+ ai_adb_parent.attr ("id")+"\"", "class=\""+ ai_adb_parent.attr ("class")+"\"");
|
170 |
|
171 |
var ai_adb_css = $(this).data ("css");
|
172 |
if (typeof ai_adb_css == "undefined") ai_adb_css = "display: none !important;";
|
174 |
var ai_adb_selectors = $(this).data ("selectors");
|
175 |
if (typeof ai_adb_selectors == "undefined" || ai_adb_selectors == '') ai_adb_selectors = "p";
|
176 |
|
177 |
+
if (ai_adb_debugging) console.log ('AI AD BLOCKING CSS, css=\'' + ai_adb_css +'\'', "selectors='" + ai_adb_selectors + "'");
|
178 |
|
179 |
var ai_adb_action = false;
|
180 |
$(ai_adb_parent).find ('.AI_ADB_CONTENT_CSS_BEGIN_CLASS, ' + ai_adb_selectors).each (function () {
|
191 |
$(".AI_ADB_CONTENT_DELETE_BEGIN_CLASS").each (function () {
|
192 |
var ai_adb_parent = $(this).parent ();
|
193 |
|
194 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING DELETE, parent", ai_adb_parent.prop ("tagName"), "id=\""+ ai_adb_parent.attr ("id")+"\"", "class=\""+ ai_adb_parent.attr ("class")+"\"");
|
195 |
|
196 |
var ai_adb_selectors = $(this).data ("selectors");
|
197 |
if (typeof ai_adb_selectors == "undefined" || ai_adb_selectors == '') ai_adb_selectors = "p";
|
198 |
|
199 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING DELETE, selectors='" + ai_adb_selectors + "'");
|
200 |
|
201 |
var ai_adb_action = false;
|
202 |
$(ai_adb_parent).find ('.AI_ADB_CONTENT_DELETE_BEGIN_CLASS, ' + ai_adb_selectors).each (function () {
|
212 |
$(".AI_ADB_CONTENT_REPLACE_BEGIN_CLASS").each (function () {
|
213 |
var ai_adb_parent = $(this).parent ();
|
214 |
|
215 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING REPLACE, parent", ai_adb_parent.prop ("tagName"), "id=\""+ ai_adb_parent.attr ("id")+"\"", "class=\""+ ai_adb_parent.attr ("class")+"\"");
|
216 |
|
217 |
var ai_adb_text = $(this).data ("text");
|
218 |
if (typeof ai_adb_text == "undefined") ai_adb_text = "";
|
223 |
var ai_adb_selectors = $(this).data ("selectors");
|
224 |
if (typeof ai_adb_selectors == "undefined" || ai_adb_selectors == '') ai_adb_selectors = "p";
|
225 |
|
226 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING REPLACE, text=\'" + ai_adb_text + '\'', 'css=\'' + ai_adb_css +'\'', "selectors='" + ai_adb_selectors + "'");
|
227 |
|
228 |
var ai_adb_action = false;
|
229 |
$(ai_adb_parent).find ('.AI_ADB_CONTENT_REPLACE_BEGIN_CLASS, ' + ai_adb_selectors).each (function () {
|
246 |
|
247 |
var ai_adb_detected = function(n) {
|
248 |
|
249 |
+
if (ai_adb_debugging && n == 0) console.log ('');
|
250 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING DETECTED", n);
|
251 |
|
252 |
if (!ai_adb_active) {
|
253 |
ai_adb_active = true;
|
255 |
(function ($) {
|
256 |
|
257 |
$(window).ready(function () {
|
258 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING block actions");
|
259 |
|
260 |
$(".ai-adb-hide").each (function () {
|
261 |
$(this).css ({"display": "none", "visibility": "hidden"});
|
271 |
|
272 |
if (ai_adb_debugging) {
|
273 |
var debug_info = $(this).data ("ai-debug");
|
274 |
+
console.log ("AI AD BLOCKING HIDE", typeof debug_info != "undefined" ? debug_info : "");
|
275 |
}
|
276 |
});
|
277 |
|
298 |
|
299 |
if (ai_adb_debugging) {
|
300 |
var debug_info = $(this).data ("ai-debug");
|
301 |
+
console.log ("AI AD BLOCKING SHOW", typeof debug_info != "undefined" ? debug_info : "");
|
302 |
}
|
303 |
});
|
304 |
|
307 |
setTimeout (ai_adb_process_content, 10);
|
308 |
});
|
309 |
|
310 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING action check");
|
311 |
// $.removeCookie (ai_adb_pgv_cookie_name, {path: "/" });
|
312 |
|
313 |
if (ai_adb_page_views != 0) {
|
314 |
var ai_adb_page_view_counter = 1;
|
315 |
var cookie = $.cookie (ai_adb_pgv_cookie_name);
|
316 |
if (typeof cookie != "undefined") ai_adb_page_view_counter = parseInt (cookie) + 1;
|
317 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING page views cookie:", cookie, "- page view:", ai_adb_page_view_counter);
|
318 |
if (ai_adb_page_view_counter < ai_adb_page_views) {
|
319 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING", ai_adb_page_views, "page views not reached, no action");
|
320 |
var d1 = ai_adb_page_view_counter;
|
321 |
var AI_ADB_STATUS_MESSAGE=1;
|
322 |
$.cookie (ai_adb_pgv_cookie_name, ai_adb_page_view_counter, {expires: 365, path: "/"});
|
326 |
|
327 |
if (ai_adb_message_cookie_lifetime != 0 && (ai_adb_action != 1 || !ai_adb_message_undismissible)) {
|
328 |
var cookie = $.cookie (ai_adb_act_cookie_name);
|
329 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING cookie:", cookie);
|
330 |
if (typeof cookie != "undefined" && cookie == "AI_CONST_AI_ADB_COOKIE_VALUE") {
|
331 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING valid cookie detected, no action");
|
332 |
var AI_ADB_STATUS_MESSAGE=2;
|
333 |
return;
|
334 |
}
|
335 |
|
336 |
+
else if (ai_adb_debugging) console.log ("AI AD BLOCKING invalid cookie");
|
337 |
$.cookie (ai_adb_act_cookie_name, "AI_CONST_AI_ADB_COOKIE_VALUE", {expires: ai_adb_message_cookie_lifetime, path: "/"});
|
338 |
} else $.removeCookie (ai_adb_act_cookie_name, {path: "/" });
|
339 |
|
340 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING action", ai_adb_action);
|
341 |
+
|
342 |
+
if (ai_adb_action == 0) {
|
343 |
+
var AI_ADB_STATUS_MESSAGE=6;
|
344 |
+
} else {
|
345 |
+
var AI_ADB_STATUS_MESSAGE=3;
|
346 |
+
}
|
347 |
|
348 |
switch (ai_adb_action) {
|
349 |
case 1:
|
363 |
}
|
364 |
}
|
365 |
|
366 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING MESSAGE click detection installed");
|
367 |
|
368 |
} else {
|
369 |
// $.removeCookie (ai_adb_act_cookie_name, {path: "/" });
|
370 |
}
|
371 |
|
372 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING MESSAGE");
|
373 |
$("body").prepend (ai_adb_overlay).prepend (ai_adb_message_window);
|
374 |
break;
|
375 |
case 2:
|
376 |
if (ai_adb_redirection_url != "") {
|
377 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING REDIRECTION to", ai_adb_redirection_url);
|
378 |
|
379 |
var redirect = true;
|
380 |
if (ai_adb_redirection_url.toLowerCase().substring (0, 4) == "http") {
|
392 |
|
393 |
window.location.replace (ai_adb_redirection_url)
|
394 |
} else {
|
395 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING no redirection, cookie:", cookie);
|
396 |
|
397 |
}
|
398 |
} else {
|
399 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING already on page", window.location.href);
|
400 |
jQuery.removeCookie (ai_adb_page_redirection_cookie_name, {path: "/"});
|
401 |
}
|
402 |
}
|
413 |
var ai_adb_undetected = function(n) {
|
414 |
ai_adb_counter ++;
|
415 |
|
416 |
+
if (ai_adb_debugging && n == 1) console.log ('');
|
417 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING not detected", n, "- counter:", ai_adb_counter);
|
418 |
|
419 |
if (!ai_adb_active && ai_adb_counter == 3) {
|
420 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING NOT DETECTED");
|
421 |
|
422 |
var AI_ADB_STATUS_MESSAGE=4; // Check replacement code {}
|
423 |
|
431 |
// if (redirected_page) {
|
432 |
// var cookie = jQuery.cookie (ai_adb_page_redirection_cookie_name);
|
433 |
// if (typeof cookie != "undefined" && cookie.toLowerCase().substring (0, 4) == "http") {
|
434 |
+
// if (ai_adb_debugging) console.log ("AI AD BLOCKING returning to", cookie);
|
435 |
// jQuery.removeCookie (ai_adb_page_redirection_cookie_name, {path: "/"});
|
436 |
// window.location.replace (cookie);
|
437 |
// }
|
477 |
var ai_adb_selector = ai_adb_selectors.split (",");
|
478 |
$.each (ai_adb_selector, function (i) {
|
479 |
|
480 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING selector", ai_adb_selector [i]);
|
481 |
|
482 |
if ($(ai_adb_selector [i]).length != 0) {
|
483 |
$(ai_adb_selector [i]).each (function (n) {
|
484 |
|
485 |
+
if (ai_adb_debugging) console.log ("AI AD BLOCKING element id=\"" + $(this).attr ("id") + "\" class=\"" + $(this).attr ("class") + "\" heights:", $(this).outerHeight (), $(this).innerHeight (), $(this).height ());
|
486 |
|
487 |
ai_adb_el_counter ++;
|
488 |
if ($(this).outerHeight () === 0) {
|
includes/js/ai-adb.min.js
CHANGED
@@ -15,25 +15,26 @@ while(i<input.length){chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3
|
|
15 |
input.length){enc1=keyString.indexOf(input.charAt(i++));enc2=keyString.indexOf(input.charAt(i++));enc3=keyString.indexOf(input.charAt(i++));enc4=keyString.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64)output=output+String.fromCharCode(chr2);if(enc4!=64)output=output+String.fromCharCode(chr3)}output=uTF8Decode(output);return output}})})(jQuery);var ai_adb=false;
|
16 |
var ai_adb_debugging=typeof ai_debugging!=="undefined";var ai_adb_active=false;var ai_adb_counter=0;var ai_adb_overlay=AI_ADB_OVERLAY_WINDOW;var ai_adb_message_window=AI_ADB_MESSAGE_WINDOW;var ai_adb_message_undismissible=AI_FUNCB_GET_UNDISMISSIBLE_MESSAGE;var ai_adb_act_cookie_name="aiADB";var ai_adb_pgv_cookie_name="aiADB_PV";var ai_adb_page_redirection_cookie_name="aiADB_PR";var ai_adb_message_cookie_lifetime=AI_FUNCT_GET_NO_ACTION_PERIOD;var ai_adb_action=AI_FUNC_GET_ADB_ACTION;
|
17 |
var ai_adb_page_views=AI_FUNCT_GET_DELAY_ACTION;var ai_adb_selectors="AI_ADB_SELECTORS";var ai_adb_redirection_url="AI_ADB_REDIRECTION_PAGE";
|
18 |
-
function ai_adb_process_content(){(function($){if(ai_adb_debugging)console.log("");if(ai_adb_debugging)console.log("AI
|
19 |
-
var ai_adb_selectors=$(this).data("selectors");if(typeof ai_adb_selectors=="undefined"||ai_adb_selectors=="")ai_adb_selectors="p";if(ai_adb_debugging)console.log("AI
|
20 |
-
ai_adb_action=false}else if(ai_adb_action){var ai_adb_style=$(this).attr("style");if(typeof ai_adb_style=="undefined")ai_adb_style="";$(this).attr("style",ai_adb_style+";"+ai_adb_css)}})});$(".AI_ADB_CONTENT_DELETE_BEGIN_CLASS").each(function(){var ai_adb_parent=$(this).parent();if(ai_adb_debugging)console.log("AI
|
21 |
-
"undefined"||ai_adb_selectors=="")ai_adb_selectors="p";if(ai_adb_debugging)console.log("AI
|
22 |
-
$(this).parent();if(ai_adb_debugging)console.log("AI
|
23 |
ai_adb_text+"'","css='"+ai_adb_css+"'","selectors='"+ai_adb_selectors+"'");var ai_adb_action=false;$(ai_adb_parent).find(".AI_ADB_CONTENT_REPLACE_BEGIN_CLASS, "+ai_adb_selectors).each(function(){if($(this).hasClass("AI_ADB_CONTENT_REPLACE_BEGIN_CLASS")){$(this).remove();ai_adb_action=true}else if($(this).hasClass("AI_ADB_CONTENT_REPLACE_END_CLASS")){$(this).remove();ai_adb_action=false}else if(ai_adb_action){if(ai_adb_text.length!=0){var n=Math.round($(this).text().length/(ai_adb_text.length+1));
|
24 |
$(this).text(Array(n+1).join(ai_adb_text+" "))}else $(this).text("");var ai_adb_style=$(this).attr("style");if(typeof ai_adb_style=="undefined")ai_adb_style="";$(this).attr("style",ai_adb_style+";"+ai_adb_css)}})})})(jQuery)}
|
25 |
-
var ai_adb_detected=function(n){if(ai_adb_debugging)console.log("AI
|
26 |
-
data.constructor===Array){data[1]="";wrapping_div.data("ai",btoa(JSON.stringify(data)))}}if(ai_adb_debugging){var debug_info=$(this).data("ai-debug");console.log("AI
|
27 |
-
JSON.parse(atob(wrapping_div.data("ai")));if(typeof data!=="undefined"&&data.constructor===Array){data[1]="";tracking_data=btoa(JSON.stringify(data))}}wrapping_div.data("ai",tracking_data)}}if(ai_adb_debugging){var debug_info=$(this).data("ai-debug");console.log("AI
|
28 |
-
|
29 |
-
path:"/"});return}}if(ai_adb_message_cookie_lifetime!=0&&(ai_adb_action!=1||!ai_adb_message_undismissible)){var cookie=$.cookie(ai_adb_act_cookie_name);if(ai_adb_debugging)console.log("AI
|
30 |
-
"AI_CONST_AI_ADB_COOKIE_VALUE",{expires:ai_adb_message_cookie_lifetime,path:"/"})}else $.removeCookie(ai_adb_act_cookie_name,{path:"/"});if(ai_adb_debugging)console.log("AI
|
31 |
-
window.onkeydown=function(event){if(event.keyCode===27){ai_adb_overlay.click();ai_adb_message_window.click()}};if(ai_adb_debugging)console.log("AI
|
32 |
-
4)=="http"){if(window.location.href==ai_adb_redirection_url)var redirect=false}else if(window.location.pathname==ai_adb_redirection_url)var redirect=false;if(redirect){var cookie=$.cookie(ai_adb_page_redirection_cookie_name);if(typeof cookie=="undefined"){var date=new Date;date.setTime(date.getTime()+10*1E3);$.cookie(ai_adb_page_redirection_cookie_name,window.location.href,{expires:date,path:"/"});window.location.replace(ai_adb_redirection_url)}else if(ai_adb_debugging)console.log("AI
|
33 |
-
cookie)}else{if(ai_adb_debugging)console.log("AI
|
|
|
34 |
if(!document.getElementById("AI_CONST_AI_ADB_1_NAME"))jQuery(document).ready(function(){if(!ai_adb_active||ai_adb_debugging)ai_adb_detected(1)});else jQuery(document).ready(function(){ai_adb_undetected(1)});if(typeof window.AI_CONST_AI_ADB_2_NAME=="undefined")jQuery(document).ready(function(){if(!ai_adb_active||ai_adb_debugging)ai_adb_detected(2)});else jQuery(document).ready(function(){ai_adb_undetected(2)});
|
35 |
jQuery(document).ready(function($){$(window).ready(function(){$("#ai-adb-bar").click(function(){$.removeCookie(ai_adb_act_cookie_name,{path:"/"});$.removeCookie(ai_adb_pgv_cookie_name,{path:"/"});var AI_ADB_STATUS_MESSAGE=5});if($("#banner-advert-container img").length>0){if($("#banner-advert-container img").outerHeight()===0)$(document).ready(function(){if(!ai_adb_active||ai_adb_debugging)ai_adb_detected(3)});else $(document).ready(function(){ai_adb_undetected(3)});$("#banner-advert-container img").remove()}if((!ai_adb_active||
|
36 |
-
ai_adb_debugging)&&ai_adb_selectors!=""){var ai_adb_el_counter=0;var ai_adb_el_zero=0;var ai_adb_selector=ai_adb_selectors.split(",");$.each(ai_adb_selector,function(i){if(ai_adb_debugging)console.log("AI
|
37 |
ai_adb_el_counter++;if($(this).outerHeight()===0){$(document).ready(function(){if(!ai_adb_active||ai_adb_debugging)ai_adb_detected(4)});ai_adb_el_zero++;if(!ai_adb_debugging)return false}})});if(ai_adb_el_counter!=0&&ai_adb_el_zero==0)$(document).ready(function(){ai_adb_undetected(4)})}})});
|
38 |
(function(factory){if(typeof define==="function"&&define.amd)define(["jquery"],factory);else if(typeof exports==="object")factory(require("jquery"));else factory(jQuery)})(function($){var pluses=/\+/g;function encode(s){return config.raw?s:encodeURIComponent(s)}function decode(s){return config.raw?s:decodeURIComponent(s)}function stringifyCookieValue(value){return encode(config.json?JSON.stringify(value):String(value))}function parseCookieValue(s){if(s.indexOf('"')===0)s=s.slice(1,-1).replace(/\\"/g,
|
39 |
'"').replace(/\\\\/g,"\\");try{s=decodeURIComponent(s.replace(pluses," "));return config.json?JSON.parse(s):s}catch(e){}}function read(s,converter){var value=config.raw?s:parseCookieValue(s);return $.isFunction(converter)?converter(value):value}var config=$.cookie=function(key,value,options){if(value!==undefined&&!$.isFunction(value)){options=$.extend({},config.defaults,options);if(typeof options.expires==="number"){var days=options.expires,t=options.expires=new Date;t.setTime(+t+days*864E5)}return document.cookie=
|
15 |
input.length){enc1=keyString.indexOf(input.charAt(i++));enc2=keyString.indexOf(input.charAt(i++));enc3=keyString.indexOf(input.charAt(i++));enc4=keyString.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64)output=output+String.fromCharCode(chr2);if(enc4!=64)output=output+String.fromCharCode(chr3)}output=uTF8Decode(output);return output}})})(jQuery);var ai_adb=false;
|
16 |
var ai_adb_debugging=typeof ai_debugging!=="undefined";var ai_adb_active=false;var ai_adb_counter=0;var ai_adb_overlay=AI_ADB_OVERLAY_WINDOW;var ai_adb_message_window=AI_ADB_MESSAGE_WINDOW;var ai_adb_message_undismissible=AI_FUNCB_GET_UNDISMISSIBLE_MESSAGE;var ai_adb_act_cookie_name="aiADB";var ai_adb_pgv_cookie_name="aiADB_PV";var ai_adb_page_redirection_cookie_name="aiADB_PR";var ai_adb_message_cookie_lifetime=AI_FUNCT_GET_NO_ACTION_PERIOD;var ai_adb_action=AI_FUNC_GET_ADB_ACTION;
|
17 |
var ai_adb_page_views=AI_FUNCT_GET_DELAY_ACTION;var ai_adb_selectors="AI_ADB_SELECTORS";var ai_adb_redirection_url="AI_ADB_REDIRECTION_PAGE";
|
18 |
+
function ai_adb_process_content(){(function($){if(ai_adb_debugging)console.log("");if(ai_adb_debugging)console.log("AI AD BLOCKING CONTENT PROCESSING");$(".AI_ADB_CONTENT_CSS_BEGIN_CLASS").each(function(){var ai_adb_parent=$(this).parent();if(ai_adb_debugging)console.log("AI AD BLOCKING parent",ai_adb_parent.prop("tagName"),'id="'+ai_adb_parent.attr("id")+'"','class="'+ai_adb_parent.attr("class")+'"');var ai_adb_css=$(this).data("css");if(typeof ai_adb_css=="undefined")ai_adb_css="display: none !important;";
|
19 |
+
var ai_adb_selectors=$(this).data("selectors");if(typeof ai_adb_selectors=="undefined"||ai_adb_selectors=="")ai_adb_selectors="p";if(ai_adb_debugging)console.log("AI AD BLOCKING CSS, css='"+ai_adb_css+"'","selectors='"+ai_adb_selectors+"'");var ai_adb_action=false;$(ai_adb_parent).find(".AI_ADB_CONTENT_CSS_BEGIN_CLASS, "+ai_adb_selectors).each(function(){if($(this).hasClass("AI_ADB_CONTENT_CSS_BEGIN_CLASS")){$(this).remove();ai_adb_action=true}else if($(this).hasClass("AI_ADB_CONTENT_CSS_END_CLASS")){$(this).remove();
|
20 |
+
ai_adb_action=false}else if(ai_adb_action){var ai_adb_style=$(this).attr("style");if(typeof ai_adb_style=="undefined")ai_adb_style="";$(this).attr("style",ai_adb_style+";"+ai_adb_css)}})});$(".AI_ADB_CONTENT_DELETE_BEGIN_CLASS").each(function(){var ai_adb_parent=$(this).parent();if(ai_adb_debugging)console.log("AI AD BLOCKING DELETE, parent",ai_adb_parent.prop("tagName"),'id="'+ai_adb_parent.attr("id")+'"','class="'+ai_adb_parent.attr("class")+'"');var ai_adb_selectors=$(this).data("selectors");if(typeof ai_adb_selectors==
|
21 |
+
"undefined"||ai_adb_selectors=="")ai_adb_selectors="p";if(ai_adb_debugging)console.log("AI AD BLOCKING DELETE, selectors='"+ai_adb_selectors+"'");var ai_adb_action=false;$(ai_adb_parent).find(".AI_ADB_CONTENT_DELETE_BEGIN_CLASS, "+ai_adb_selectors).each(function(){if($(this).hasClass("AI_ADB_CONTENT_DELETE_BEGIN_CLASS")){$(this).remove();ai_adb_action=true}else if($(this).hasClass("AI_ADB_CONTENT_DELETE_END_CLASS")){$(this).remove();ai_adb_action=false}else if(ai_adb_action)$(this).remove()})});$(".AI_ADB_CONTENT_REPLACE_BEGIN_CLASS").each(function(){var ai_adb_parent=
|
22 |
+
$(this).parent();if(ai_adb_debugging)console.log("AI AD BLOCKING REPLACE, parent",ai_adb_parent.prop("tagName"),'id="'+ai_adb_parent.attr("id")+'"','class="'+ai_adb_parent.attr("class")+'"');var ai_adb_text=$(this).data("text");if(typeof ai_adb_text=="undefined")ai_adb_text="";var ai_adb_css=$(this).data("css");if(typeof ai_adb_css=="undefined")ai_adb_css="";var ai_adb_selectors=$(this).data("selectors");if(typeof ai_adb_selectors=="undefined"||ai_adb_selectors=="")ai_adb_selectors="p";if(ai_adb_debugging)console.log("AI AD BLOCKING REPLACE, text='"+
|
23 |
ai_adb_text+"'","css='"+ai_adb_css+"'","selectors='"+ai_adb_selectors+"'");var ai_adb_action=false;$(ai_adb_parent).find(".AI_ADB_CONTENT_REPLACE_BEGIN_CLASS, "+ai_adb_selectors).each(function(){if($(this).hasClass("AI_ADB_CONTENT_REPLACE_BEGIN_CLASS")){$(this).remove();ai_adb_action=true}else if($(this).hasClass("AI_ADB_CONTENT_REPLACE_END_CLASS")){$(this).remove();ai_adb_action=false}else if(ai_adb_action){if(ai_adb_text.length!=0){var n=Math.round($(this).text().length/(ai_adb_text.length+1));
|
24 |
$(this).text(Array(n+1).join(ai_adb_text+" "))}else $(this).text("");var ai_adb_style=$(this).attr("style");if(typeof ai_adb_style=="undefined")ai_adb_style="";$(this).attr("style",ai_adb_style+";"+ai_adb_css)}})})})(jQuery)}
|
25 |
+
var ai_adb_detected=function(n){if(ai_adb_debugging&&n==0)console.log("");if(ai_adb_debugging)console.log("AI AD BLOCKING DETECTED",n);if(!ai_adb_active){ai_adb_active=true;(function($){$(window).ready(function(){if(ai_adb_debugging)console.log("AI AD BLOCKING block actions");$(".ai-adb-hide").each(function(){$(this).css({"display":"none","visibility":"hidden"});var wrapping_div=$(this).closest("div[data-ai]");if(typeof wrapping_div.data("ai")!="undefined"){var data=JSON.parse(atob(wrapping_div.data("ai")));
|
26 |
+
if(typeof data!=="undefined"&&data.constructor===Array){data[1]="";wrapping_div.data("ai",btoa(JSON.stringify(data)))}}if(ai_adb_debugging){var debug_info=$(this).data("ai-debug");console.log("AI AD BLOCKING HIDE",typeof debug_info!="undefined"?debug_info:"")}});$(".ai-adb-show").each(function(){$(this).css({"display":"block","visibility":"visible"});var tracking_data=$(this).data("ai-tracking");if(typeof tracking_data!="undefined"){var wrapping_div=$(this).closest("div[data-ai]");if(typeof wrapping_div.data("ai")!=
|
27 |
+
"undefined"){if($(this).hasClass("ai-no-tracking")){var data=JSON.parse(atob(wrapping_div.data("ai")));if(typeof data!=="undefined"&&data.constructor===Array){data[1]="";tracking_data=btoa(JSON.stringify(data))}}wrapping_div.data("ai",tracking_data)}}if(ai_adb_debugging){var debug_info=$(this).data("ai-debug");console.log("AI AD BLOCKING SHOW",typeof debug_info!="undefined"?debug_info:"")}});setTimeout(ai_adb_process_content,10)});if(ai_adb_debugging)console.log("AI AD BLOCKING action check");if(ai_adb_page_views!=
|
28 |
+
0){var ai_adb_page_view_counter=1;var cookie=$.cookie(ai_adb_pgv_cookie_name);if(typeof cookie!="undefined")ai_adb_page_view_counter=parseInt(cookie)+1;if(ai_adb_debugging)console.log("AI AD BLOCKING page views cookie:",cookie,"- page view:",ai_adb_page_view_counter);if(ai_adb_page_view_counter<ai_adb_page_views){if(ai_adb_debugging)console.log("AI AD BLOCKING",ai_adb_page_views,"page views not reached, no action");var d1=ai_adb_page_view_counter;var AI_ADB_STATUS_MESSAGE=1;$.cookie(ai_adb_pgv_cookie_name,
|
29 |
+
ai_adb_page_view_counter,{expires:365,path:"/"});return}}if(ai_adb_message_cookie_lifetime!=0&&(ai_adb_action!=1||!ai_adb_message_undismissible)){var cookie=$.cookie(ai_adb_act_cookie_name);if(ai_adb_debugging)console.log("AI AD BLOCKING cookie:",cookie);if(typeof cookie!="undefined"&&cookie=="AI_CONST_AI_ADB_COOKIE_VALUE"){if(ai_adb_debugging)console.log("AI AD BLOCKING valid cookie detected, no action");var AI_ADB_STATUS_MESSAGE=2;return}else if(ai_adb_debugging)console.log("AI AD BLOCKING invalid cookie");
|
30 |
+
$.cookie(ai_adb_act_cookie_name,"AI_CONST_AI_ADB_COOKIE_VALUE",{expires:ai_adb_message_cookie_lifetime,path:"/"})}else $.removeCookie(ai_adb_act_cookie_name,{path:"/"});if(ai_adb_debugging)console.log("AI AD BLOCKING action",ai_adb_action);if(ai_adb_action==0)var AI_ADB_STATUS_MESSAGE=6;else var AI_ADB_STATUS_MESSAGE=3;switch(ai_adb_action){case 1:if(!ai_adb_message_undismissible){ai_adb_overlay.click(function(){$(this).remove();ai_adb_message_window.remove()}).css("cursor","pointer");ai_adb_message_window.click(function(){$(this).remove();
|
31 |
+
ai_adb_overlay.remove()}).css("cursor","pointer");window.onkeydown=function(event){if(event.keyCode===27){ai_adb_overlay.click();ai_adb_message_window.click()}};if(ai_adb_debugging)console.log("AI AD BLOCKING MESSAGE click detection installed")}else;if(ai_adb_debugging)console.log("AI AD BLOCKING MESSAGE");$("body").prepend(ai_adb_overlay).prepend(ai_adb_message_window);break;case 2:if(ai_adb_redirection_url!=""){if(ai_adb_debugging)console.log("AI AD BLOCKING REDIRECTION to",ai_adb_redirection_url);
|
32 |
+
var redirect=true;if(ai_adb_redirection_url.toLowerCase().substring(0,4)=="http"){if(window.location.href==ai_adb_redirection_url)var redirect=false}else if(window.location.pathname==ai_adb_redirection_url)var redirect=false;if(redirect){var cookie=$.cookie(ai_adb_page_redirection_cookie_name);if(typeof cookie=="undefined"){var date=new Date;date.setTime(date.getTime()+10*1E3);$.cookie(ai_adb_page_redirection_cookie_name,window.location.href,{expires:date,path:"/"});window.location.replace(ai_adb_redirection_url)}else if(ai_adb_debugging)console.log("AI AD BLOCKING no redirection, cookie:",
|
33 |
+
cookie)}else{if(ai_adb_debugging)console.log("AI AD BLOCKING already on page",window.location.href);jQuery.removeCookie(ai_adb_page_redirection_cookie_name,{path:"/"})}}break}})(jQuery);ai_adb=true}};
|
34 |
+
var ai_adb_undetected=function(n){ai_adb_counter++;if(ai_adb_debugging&&n==1)console.log("");if(ai_adb_debugging)console.log("AI AD BLOCKING not detected",n,"- counter:",ai_adb_counter);if(!ai_adb_active&&ai_adb_counter==3){if(ai_adb_debugging)console.log("AI AD BLOCKING NOT DETECTED");var AI_ADB_STATUS_MESSAGE=4}};if(AI_DBG_AI_DEBUG_AD_BLOCKING)jQuery(document).ready(function(){ai_adb_detected(0)});
|
35 |
if(!document.getElementById("AI_CONST_AI_ADB_1_NAME"))jQuery(document).ready(function(){if(!ai_adb_active||ai_adb_debugging)ai_adb_detected(1)});else jQuery(document).ready(function(){ai_adb_undetected(1)});if(typeof window.AI_CONST_AI_ADB_2_NAME=="undefined")jQuery(document).ready(function(){if(!ai_adb_active||ai_adb_debugging)ai_adb_detected(2)});else jQuery(document).ready(function(){ai_adb_undetected(2)});
|
36 |
jQuery(document).ready(function($){$(window).ready(function(){$("#ai-adb-bar").click(function(){$.removeCookie(ai_adb_act_cookie_name,{path:"/"});$.removeCookie(ai_adb_pgv_cookie_name,{path:"/"});var AI_ADB_STATUS_MESSAGE=5});if($("#banner-advert-container img").length>0){if($("#banner-advert-container img").outerHeight()===0)$(document).ready(function(){if(!ai_adb_active||ai_adb_debugging)ai_adb_detected(3)});else $(document).ready(function(){ai_adb_undetected(3)});$("#banner-advert-container img").remove()}if((!ai_adb_active||
|
37 |
+
ai_adb_debugging)&&ai_adb_selectors!=""){var ai_adb_el_counter=0;var ai_adb_el_zero=0;var ai_adb_selector=ai_adb_selectors.split(",");$.each(ai_adb_selector,function(i){if(ai_adb_debugging)console.log("AI AD BLOCKING selector",ai_adb_selector[i]);if($(ai_adb_selector[i]).length!=0)$(ai_adb_selector[i]).each(function(n){if(ai_adb_debugging)console.log('AI AD BLOCKING element id="'+$(this).attr("id")+'" class="'+$(this).attr("class")+'" heights:',$(this).outerHeight(),$(this).innerHeight(),$(this).height());
|
38 |
ai_adb_el_counter++;if($(this).outerHeight()===0){$(document).ready(function(){if(!ai_adb_active||ai_adb_debugging)ai_adb_detected(4)});ai_adb_el_zero++;if(!ai_adb_debugging)return false}})});if(ai_adb_el_counter!=0&&ai_adb_el_zero==0)$(document).ready(function(){ai_adb_undetected(4)})}})});
|
39 |
(function(factory){if(typeof define==="function"&&define.amd)define(["jquery"],factory);else if(typeof exports==="object")factory(require("jquery"));else factory(jQuery)})(function($){var pluses=/\+/g;function encode(s){return config.raw?s:encodeURIComponent(s)}function decode(s){return config.raw?s:decodeURIComponent(s)}function stringifyCookieValue(value){return encode(config.json?JSON.stringify(value):String(value))}function parseCookieValue(s){if(s.indexOf('"')===0)s=s.slice(1,-1).replace(/\\"/g,
|
40 |
'"').replace(/\\\\/g,"\\");try{s=decodeURIComponent(s.replace(pluses," "));return config.json?JSON.parse(s):s}catch(e){}}function read(s,converter){var value=config.raw?s:parseCookieValue(s);return $.isFunction(converter)?converter(value):value}var config=$.cookie=function(key,value,options){if(value!==undefined&&!$.isFunction(value)){options=$.extend({},config.defaults,options);if(typeof options.expires==="number"){var days=options.expires,t=options.expires=new Date;t.setTime(+t+days*864E5)}return document.cookie=
|
includes/preview.php
CHANGED
@@ -1619,13 +1619,14 @@ td.demo-wrapper-background {
|
|
1619 |
.ui-spinner {
|
1620 |
border: 0;
|
1621 |
}
|
|
|
1622 |
.ui-spinner-horizontal, .ui-spinner-horizontal .ui-spinner-input {
|
1623 |
height: 14px;
|
1624 |
}
|
1625 |
.ui-spinner-horizontal .ui-spinner-input {
|
1626 |
width: 23px;
|
1627 |
outline: 0;
|
1628 |
-
margin:
|
1629 |
}
|
1630 |
|
1631 |
.spinner.sticky .ui-spinner-horizontal .ui-spinner-input {
|
@@ -1711,7 +1712,7 @@ select {
|
|
1711 |
</div>
|
1712 |
|
1713 |
<?php if (!$read_only) : ?>
|
1714 |
-
<div style="margin: 10px -8px 10px
|
1715 |
<table class="screen" cellspacing=0 cellspacing="0">
|
1716 |
<tr>
|
1717 |
<td><span>◃</span></td>
|
1619 |
.ui-spinner {
|
1620 |
border: 0;
|
1621 |
}
|
1622 |
+
|
1623 |
.ui-spinner-horizontal, .ui-spinner-horizontal .ui-spinner-input {
|
1624 |
height: 14px;
|
1625 |
}
|
1626 |
.ui-spinner-horizontal .ui-spinner-input {
|
1627 |
width: 23px;
|
1628 |
outline: 0;
|
1629 |
+
margin: 0 12px 0 12px;
|
1630 |
}
|
1631 |
|
1632 |
.spinner.sticky .ui-spinner-horizontal .ui-spinner-input {
|
1712 |
</div>
|
1713 |
|
1714 |
<?php if (!$read_only) : ?>
|
1715 |
+
<div style="margin: 10px -8px 10px -8px">
|
1716 |
<table class="screen" cellspacing=0 cellspacing="0">
|
1717 |
<tr>
|
1718 |
<td><span>◃</span></td>
|
js/ad-inserter.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
var javascript_version = "2.3.
|
2 |
var ignore_key = true;
|
3 |
var start = 1;
|
4 |
var end = 16;
|
1 |
+
var javascript_version = "2.3.17";
|
2 |
var ignore_key = true;
|
3 |
var start = 1;
|
4 |
var end = 16;
|
readme.txt
CHANGED
@@ -6,7 +6,7 @@ Tags: ads, adsense, header footer code, ad management, sticky fixed widgets, adv
|
|
6 |
Requires at least: 4.0
|
7 |
Tested up to: 4.9
|
8 |
Requires PHP: 5.6
|
9 |
-
Stable tag: 2.3.
|
10 |
License: GPLv3
|
11 |
|
12 |
Insert and manage ads: Amazon, Google AdSense ads, banner rotation, sticky widget ads, AMP, PHP, HTML, CSS, Javascript, tracking, footer, header code
|
@@ -47,8 +47,8 @@ Average Rating: 5 out of 5 stars - check <a href="https://wordpress.org/support/
|
|
47 |
|
48 |
**Features**
|
49 |
|
50 |
-
* [AdSense integration](https://adinserter.pro/adsense-ads) - get ads form your AdSense account
|
51 |
-
* Syntax highlighting [editor](https://adinserter.pro/code-editing)
|
52 |
* Code preview with visual CSS editor
|
53 |
* Automatically inserts ads on posts and pages
|
54 |
* Insert ads before or after post
|
@@ -89,7 +89,7 @@ Average Rating: 5 out of 5 stars - check <a href="https://wordpress.org/support/
|
|
89 |
* Create rich media ads with standard WordPress TinyMCE editor
|
90 |
* Ad blocking detection - popup message, page redirection
|
91 |
* Desktop/mobile device detection (server-side and client-side - works with caching)
|
92 |
-
* [Black/White-list](https://adinserter.pro/lists) categories, tags, taxonomies, post IDs, urls, url query parameters, cookies, referers
|
93 |
* Easy copying and pasting ads or settings using internal clipboard
|
94 |
* Simple troubleshooting with many debugging functions
|
95 |
* Function to visualize inserted code blocks and ads
|
@@ -113,7 +113,7 @@ Ad Inserter is a perfect plugin to place code for Google AdSense ads at top posi
|
|
113 |
|
114 |
> If you're new to AdSense, one of your first tasks is to connect your site to AdSense. This requires you to copy the code on your AdSense homepage and paste it into the HTML of your page, between the `<head>` and `</head>` tags.
|
115 |
|
116 |
-
Check [How to insert ad code in your WordPress site](https://support.google.com/adsense/answer/7527509). Advanced users can enable [AdSense integration](https://adinserter.pro/adsense-ads#integration): import AdSense ads from the plugin settings page - no need to copy codes for AdSense ads from the AdSense admin pages. List ad units, preview AdSense ads and get ad codes where you need them.
|
117 |
|
118 |
**Endorsed by Amazon**
|
119 |
|
@@ -121,9 +121,9 @@ Amazon suggests to use Ad Inserter to add Native Shopping Ads to Wordpress posts
|
|
121 |
|
122 |
> Native Shopping Ads provide highly relevant and dynamic product recommendations in a stylishly designed and responsive ad unit that can be placed at the end of your content or within your content to create a more compelling visitor experience and shopping opportunity.
|
123 |
|
124 |
-
Check <a href="https://affiliate-program.amazon.com/help/topic/t405" target="_blank">Wordpress Integration Guide for Native Shopping Ads</a>. Ad Inserter supports also advanced contextual ads: check settings for <a href="https://adinserter.pro/settings#amazon">contextual Native Shopping Ads</a> that show ads with items related to the post content (using post tags).
|
125 |
|
126 |
-
And if you need more ads with page/category specific settings, ad statistics and metrics for impressions and clicks, A/B testing, lazy loading ads, sticky ads, slider ads, pop-up ads, geotargeting or geolocation to serve country-specific ads, functions to protect content from users using ad blockers, functions to serve different ads for users using ad blockers, multisite options to limit settings for ads, to block some IP addresses, to schedule ads, there is **Ad Inserter Pro** - all-in-one
|
127 |
|
128 |
* 64 code (ad) blocks (64 different insertion configurations for ads)
|
129 |
* Geolocation using Webnet77 or <a href="http://www.maxmind.com/" target="_blank">MaxMind</a> databases (works also with caching)
|
@@ -132,10 +132,10 @@ And if you need more ads with page/category specific settings, ad statistics and
|
|
132 |
* External tracking via Google Analytics or Matomo (Piwik)
|
133 |
* A/B testing - discover ads and settings that perform best
|
134 |
* Lazy loading ads
|
135 |
-
* [Sticky ads](https://adinserter.pro/alignments-and-styles#sticky-ads) with optional close button
|
136 |
* Sticky sidebar ads (stick to the screen or to the content)
|
137 |
* Floating slide-in banner ads
|
138 |
-
* [Sticky (floating) ads](https://adinserter.pro/alignments-and-styles#sticky-ads) with animations (fade, slide, turn, flip, zoom)
|
139 |
* Animation trigger for sticky ads (page scroll in % or px, HTML element becomes visible)
|
140 |
* Scheduling with fallback option
|
141 |
* Ad blocking detection - replace ads, protect content
|
@@ -145,14 +145,14 @@ And if you need more ads with page/category specific settings, ad statistics and
|
|
145 |
* More custom viewports for client-side desktop/mobile device detection
|
146 |
* More custom hooks for custom theme insertions
|
147 |
* Export and import of settings
|
|
|
148 |
* Support via email
|
149 |
|
150 |
Run a WordPress related blog? Have experience with AdSense ads? Interested in reviewing Ad Inserter Pro? <a href="https://adinserter.pro/contact" target="_blank">Introduce yourself</a>.
|
151 |
|
152 |
Ad Inserter Wordpress plugin is an advanced advertising manager for all kind of ads - it has many features and options to automate placing ads in order to optimally monetize your website on desktop, tablet and phone displays. It provides many simple ways to insert any kind of ads, Javascript, HTML, PHP or advert code anywhere on the page. For best placement of ads please read the user manual to get the most of the plugin.
|
153 |
|
154 |
-
|
155 |
-
* Download [Ad Inserter user manual](http://adinserter.pro/Ad_Inserter_User_Manual.pdf)
|
156 |
|
157 |
You can also use shortcodes from other plugins (for example, to insert ads from other ad plugins like AdRotate, Advanced Ads, Quick Adsense, AdSense Plugin WP QUADS, Insert Post Ads).
|
158 |
|
@@ -197,20 +197,20 @@ Maintaining several plugins (often from different vendors) is not easy. And each
|
|
197 |
|
198 |
**Quick Start**
|
199 |
|
200 |
-
|
201 |
|
202 |
* Completely **disable AdBlocker!** You don't need it when working with ads! Ad blockers prevent displaying ads and also block all AdSense pages!
|
203 |
-
* [Code block](https://adinserter.pro/code-editing) is any code (for example for Google AdSense ads) that has to be inserted (and displayed) at some position. Each code block can be configured to insert code (or ads) at almost any position supported by Wordpress
|
204 |
* To rename block click on the name
|
205 |
-
* If you are using AdSense ads check available tools and code generator for [AdSense ads](https://adinserter.pro/adsense-ads)
|
206 |
-
* Paste ad code into the code window or use <a href="https://adinserter.pro/code-editing" target="_blank">code generator</a> to generate code for banners, AdSense ads or any other HTML advert
|
207 |
-
* **Enable and use at least one insertion option** (<a href="https://adinserter.pro/documentation
|
208 |
-
* **Enable insertion on at least one <a href="https://adinserter.pro/page-types">Wordpress page type</a>** (Posts, Static pages, Homepage, Category pages, Search Pages, Archive pages)
|
209 |
* For Posts and Static pages **leave default BLANK selection value** after the checkbox unless you really know what are you doing (using individual exceptions)
|
210 |
-
* If you don't see inserted
|
211 |
-
* If you are using <a href="https://adinserter.pro/adsense-ads" target="_blank">AdSense ads</a> you may get blank (empty) ad blocks - no ads are displayed. This might
|
212 |
|
213 |
-
Few typical settings are described on the <a href="https://adinserter.pro/settings" target="_blank">Common Settings</a> page. Please make sure you have also read <a href="https://
|
214 |
|
215 |
**Insert Any Code Anywhere on the Page - Automate Insertion of Ads**
|
216 |
|
@@ -221,7 +221,7 @@ Few typical settings are described on the <a href="https://adinserter.pro/settin
|
|
221 |
* Insertion with widgets
|
222 |
* Insertion by placing PHP function calls or custom hooks in your theme files
|
223 |
|
224 |
-
Ad Inserter is **the only WordPress plugin that can insert any code or ads anywhere on the page**. If standard insertions before/after post, content or paragraph can't be used, you can use advanced insertion [before/after arbitrary HTML element](https://adinserter.pro/documentation#
|
225 |
|
226 |
If you can create a CSS slector for the page element (#id, .class) then you can insert ads before or after that element. By default this approach uses client-side insertion using Javascript to insert code block after the page loads.
|
227 |
|
@@ -239,7 +239,7 @@ Support the advancement of this plugin:
|
|
239 |
|
240 |
* Write a short <a href="https://wordpress.org/support/plugin/ad-inserter/reviews/">review</a>
|
241 |
* <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LHGZEMRTR7WB4">Donate</a> if Ad Inserter helps you to make money with ads
|
242 |
-
* Buy license for [Ad Inserter Pro](
|
243 |
|
244 |
== Installation ==
|
245 |
|
@@ -287,10 +287,10 @@ Ad Inserter inserts only the code you configure (blocks 1 - 16, Header, Footer).
|
|
287 |
When you deactivate Ad Inserter it can't insert anything as WordPress doesn't call it. If you still see ads please clear all the caches and check page source code before you make any conclusion.
|
288 |
Of course, if you configure code block with some javacript ad code, then this code may generate ads. But please, don't blame the plugin for this.
|
289 |
You can also use Ad Inserter to insert code for AdSense Auto ads on each page (usually in the header). However, **the exact placement of ads will be done by the ad code, not Ad Inserter!**
|
290 |
-
[https://adinserter.pro/adsense-ads#auto-ads](https://adinserter.pro/adsense-ads#auto-ads)
|
291 |
|
292 |
The easiest way to check Ad Inserter code blocks or ads is to use **Label blocks** debugging function:
|
293 |
-
[https://adinserter.pro/documentation
|
294 |
|
295 |
When you deactivate Ad Inserter it can't insert anything - WordPress doesn't call it. If you still see some ads that were inserted by Ad Inserter, make sure you have cleared all the caches.
|
296 |
If you still see those ads after you have disabled Ad Inserter and cleared all the caches, then the ads were not inserted by Ad Inserter.
|
@@ -298,17 +298,18 @@ If you still see those ads after you have disabled Ad Inserter and cleared all t
|
|
298 |
|
299 |
**Online Documentation**
|
300 |
|
301 |
-
* [Code Editing](https://adinserter.pro/code-editing)
|
302 |
-
* [Common Settings](https://adinserter.pro/settings)
|
303 |
* [Ad Inserter Documentation](https://adinserter.pro/documentation)
|
304 |
-
* [
|
305 |
-
* [
|
306 |
-
* [
|
307 |
-
* [
|
308 |
-
* [
|
309 |
-
* [
|
310 |
-
* [
|
311 |
-
* [
|
|
|
|
|
|
|
312 |
|
313 |
|
314 |
== Frequently Asked Questions ==
|
@@ -321,9 +322,9 @@ If you still see those ads after you have disabled Ad Inserter and cleared all t
|
|
321 |
4. Set automatic insertion option (for example: Before Post)
|
322 |
5. Enable at least one page type (for example: Posts, some insertion options don't work on all page types)
|
323 |
6. Save settings
|
324 |
-
7. Check also <a href="
|
325 |
8. Check inserted code on the posts
|
326 |
-
9. Ads are not showing? Check <a href="https://adinserter.pro/documentation#ads-not-displayed" target="_blank">troubleshooting guide</a> to find out what to check to fix the problem.
|
327 |
|
328 |
|
329 |
= Does Ad Inserter insert any internal ads? =
|
@@ -332,20 +333,20 @@ No revenue sharing and no such thing as "internal ads" or "our ads" on your webs
|
|
332 |
Ad Inserter is free, open source plugin and inserts only the code you configure (blocks 1 - 16, Header, Footer). The code you see is the code that will be inserted. Please check page source code before you make any conclusion.
|
333 |
Of course, if you configure code block with some javacript ad code, then this code may generate ads. But please, don't blame the plugin for this.
|
334 |
You can also use Ad Inserter to insert code for AdSense Auto ads on each page (usually in the header). However, **the exact placement of ads will be done by the ad code, not Ad Inserter!**
|
335 |
-
[https://adinserter.pro/adsense-ads#auto-ads](https://adinserter.pro/adsense-ads#auto-ads)
|
336 |
|
337 |
The easiest way to check Ad Inserter code blocks is to use **Label blocks** debugging function:
|
338 |
-
[https://adinserter.pro/documentation
|
339 |
|
340 |
|
341 |
= I have installed code for AdSense ads and I see ads placed at random positions. =
|
342 |
|
343 |
-
You are probably using code for [AdSense Auto ads](https://adinserter.pro/adsense-ads#auto-ads).
|
344 |
|
345 |
AdSense Auto ads (known also as Page Level Ads) is a code that you insert on every page once and it will automatically display AdSense ads on positions chosen by the code.
|
346 |
Auto ads use Google's machine learning to pick the best placements on your pages to show ads. You only need to add one piece of code to all your pages, and let Google take care of the rest.
|
347 |
|
348 |
-
Auto ads may not be suitable for some WordPress themes or layouts. In such cases it is easier to place ads at wanted locations by using [normal AdSense code](https://adinserter.pro/adsense-ads#ad-unit) and specifying exact locations where the code should be inserted.
|
349 |
|
350 |
= I have installed code for AdSense ads but the ad blocks are blank. =
|
351 |
|
@@ -360,7 +361,7 @@ Blank AdSense ad block means that the code is inserted properly only the ad code
|
|
360 |
* Errors in ad code - check or regenerate ad code
|
361 |
* You are using ad blocker
|
362 |
|
363 |
-
|
364 |
|
365 |
= What is GDPR? =
|
366 |
|
@@ -386,7 +387,7 @@ PLEASE NOTE: Installing GDPR plugin alone does not make your site GDPR compliant
|
|
386 |
|
387 |
= How to show ads based on visitor's consent? =
|
388 |
|
389 |
-
Ad Inserter supports inserting (showing) ads based on cookies or cookie values. You can define cookie conditions by black/white-listing *Url parameters* (where also [cookies are checked](https://adinserter.pro/lists#cookies)).
|
390 |
|
391 |
PLEASE NOTE: If you are using caching (very likely) you also need to set **Dynamic blocks** to **Client-side insert** (tab ⚙ / tab General) in order to check cookies in visitor's browser and not when the page is generated.
|
392 |
|
@@ -445,7 +446,7 @@ You can also try with `[adinserter data='tag']', `[adinserter data='short-title'
|
|
445 |
|
446 |
= Settings for ads ... =
|
447 |
|
448 |
-
Check <a href="
|
449 |
|
450 |
|
451 |
= What PHP versions are supported? =
|
@@ -518,7 +519,7 @@ There are two possible approaches.
|
|
518 |
3a. Click on Lists, enter post IDs (click on the button left of the list) and white-list or black-list them.
|
519 |
3b. Click on Lists, enter url (or comma separated urls) for Urls, e.g. `/permalink-url`, and white-list or black-list it.
|
520 |
|
521 |
-
For details check <a href="https://adinserter.pro/exceptions" target="_blank">Individual Post/Page Exceptions</a>.
|
522 |
|
523 |
|
524 |
= I'm using responsive theme. How can I show or hide some ads on mobile devices? =
|
@@ -607,7 +608,7 @@ The following AMP plugins have been tested with Ad Inserter:
|
|
607 |
* <a href="https://wordpress.org/plugins/wp-amp-ninja/" target="_blank">WP AMP Ninja</a> (free)
|
608 |
* WP AMP - Accelerated Mobile Pages for WordPress (paid - you need to uncheck *Remove third-party the_content hooks for better compatibility*)
|
609 |
|
610 |
-
For details check <a href="https://adinserter.pro/
|
611 |
|
612 |
|
613 |
= How can place ads below Read More tag? =
|
@@ -655,11 +656,11 @@ AD CODE RIGHT
|
|
655 |
|
656 |
== Screenshots ==
|
657 |
|
658 |
-
1. Settings for one code block (Before content). Up to 16 blocks can be configured (up to 64 in <a href="
|
659 |
2. Code preview with visual CSS editor
|
660 |
3. Code preview with visual CSS editor - highlighted code
|
661 |
4. Post / Page Ad Inserter Individual Exceptions
|
662 |
-
5. Some <a href="
|
663 |
6. Ad Inserter plugin settings
|
664 |
7. Visualization of HTML tags in post
|
665 |
8. Visualization of positions for automatic insertion in post
|
@@ -676,6 +677,10 @@ AD CODE RIGHT
|
|
676 |
|
677 |
== Changelog ==
|
678 |
|
|
|
|
|
|
|
|
|
679 |
= 2.3.16 =
|
680 |
- Added option to insert block only when WP loop is currently active
|
681 |
- Added support for Better AMP plugin
|
@@ -780,6 +785,10 @@ For the changelog of earlier versions, please refer to the separate changelog.tx
|
|
780 |
|
781 |
== Upgrade Notice ==
|
782 |
|
|
|
|
|
|
|
|
|
783 |
= 2.3.16 =
|
784 |
Added option to insert block only when WP loop is currently active;
|
785 |
Added support for Better AMP plugin;
|
6 |
Requires at least: 4.0
|
7 |
Tested up to: 4.9
|
8 |
Requires PHP: 5.6
|
9 |
+
Stable tag: 2.3.16
|
10 |
License: GPLv3
|
11 |
|
12 |
Insert and manage ads: Amazon, Google AdSense ads, banner rotation, sticky widget ads, AMP, PHP, HTML, CSS, Javascript, tracking, footer, header code
|
47 |
|
48 |
**Features**
|
49 |
|
50 |
+
* [AdSense integration](https://adinserter.pro/documentation/adsense-ads) - get ads form your AdSense account
|
51 |
+
* Syntax highlighting [editor](https://adinserter.pro/documentation/code-editing)
|
52 |
* Code preview with visual CSS editor
|
53 |
* Automatically inserts ads on posts and pages
|
54 |
* Insert ads before or after post
|
89 |
* Create rich media ads with standard WordPress TinyMCE editor
|
90 |
* Ad blocking detection - popup message, page redirection
|
91 |
* Desktop/mobile device detection (server-side and client-side - works with caching)
|
92 |
+
* [Black/White-list](https://adinserter.pro/documentation/black-and-white-lists) categories, tags, taxonomies, post IDs, urls, url query parameters, cookies, referers
|
93 |
* Easy copying and pasting ads or settings using internal clipboard
|
94 |
* Simple troubleshooting with many debugging functions
|
95 |
* Function to visualize inserted code blocks and ads
|
113 |
|
114 |
> If you're new to AdSense, one of your first tasks is to connect your site to AdSense. This requires you to copy the code on your AdSense homepage and paste it into the HTML of your page, between the `<head>` and `</head>` tags.
|
115 |
|
116 |
+
Check [How to insert ad code in your WordPress site](https://support.google.com/adsense/answer/7527509). Advanced users can enable [AdSense integration](https://adinserter.pro/documentation/adsense-ads#integration): import AdSense ads from the plugin settings page - no need to copy codes for AdSense ads from the AdSense admin pages. List ad units, preview AdSense ads and get ad codes where you need them.
|
117 |
|
118 |
**Endorsed by Amazon**
|
119 |
|
121 |
|
122 |
> Native Shopping Ads provide highly relevant and dynamic product recommendations in a stylishly designed and responsive ad unit that can be placed at the end of your content or within your content to create a more compelling visitor experience and shopping opportunity.
|
123 |
|
124 |
+
Check <a href="https://affiliate-program.amazon.com/help/topic/t405" target="_blank">Wordpress Integration Guide for Native Shopping Ads</a>. Ad Inserter supports also advanced contextual ads: check settings for <a href="https://adinserter.pro/documentation/common-settings#amazon">contextual Native Shopping Ads</a> that show ads with items related to the post content (using post tags).
|
125 |
|
126 |
+
And if you need more ads with page/category specific settings, ad statistics and metrics for impressions and clicks, A/B testing, lazy loading ads, sticky ads, slider ads, pop-up ads, geotargeting or geolocation to serve country-specific ads, functions to protect content from users using ad blockers, functions to serve different ads for users using ad blockers, multisite options to limit settings for ads, to block some IP addresses, to schedule ads, there is **Ad Inserter Pro** - all-in-one WordPress ad management plugin with many [advanced features](https://adinserter.pro/documentation/features):
|
127 |
|
128 |
* 64 code (ad) blocks (64 different insertion configurations for ads)
|
129 |
* Geolocation using Webnet77 or <a href="http://www.maxmind.com/" target="_blank">MaxMind</a> databases (works also with caching)
|
132 |
* External tracking via Google Analytics or Matomo (Piwik)
|
133 |
* A/B testing - discover ads and settings that perform best
|
134 |
* Lazy loading ads
|
135 |
+
* [Sticky ads](https://adinserter.pro/documentation/alignments-and-styles#sticky-ads) with optional close button
|
136 |
* Sticky sidebar ads (stick to the screen or to the content)
|
137 |
* Floating slide-in banner ads
|
138 |
+
* [Sticky (floating) ads](https://adinserter.pro/documentation/alignments-and-styles#sticky-ads) with animations (fade, slide, turn, flip, zoom)
|
139 |
* Animation trigger for sticky ads (page scroll in % or px, HTML element becomes visible)
|
140 |
* Scheduling with fallback option
|
141 |
* Ad blocking detection - replace ads, protect content
|
145 |
* More custom viewports for client-side desktop/mobile device detection
|
146 |
* More custom hooks for custom theme insertions
|
147 |
* Export and import of settings
|
148 |
+
* No ads on the settings page
|
149 |
* Support via email
|
150 |
|
151 |
Run a WordPress related blog? Have experience with AdSense ads? Interested in reviewing Ad Inserter Pro? <a href="https://adinserter.pro/contact" target="_blank">Introduce yourself</a>.
|
152 |
|
153 |
Ad Inserter Wordpress plugin is an advanced advertising manager for all kind of ads - it has many features and options to automate placing ads in order to optimally monetize your website on desktop, tablet and phone displays. It provides many simple ways to insert any kind of ads, Javascript, HTML, PHP or advert code anywhere on the page. For best placement of ads please read the user manual to get the most of the plugin.
|
154 |
|
155 |
+
Check <a href="https://adinserter.pro/documentation" target="_blank">Ad Inserter documentation pages</a> for detailed description of all the features and some <a href="https://adinserter.pro/documentation/common-settings" target="_blank">common settings</a> for quick start
|
|
|
156 |
|
157 |
You can also use shortcodes from other plugins (for example, to insert ads from other ad plugins like AdRotate, Advanced Ads, Quick Adsense, AdSense Plugin WP QUADS, Insert Post Ads).
|
158 |
|
197 |
|
198 |
**Quick Start**
|
199 |
|
200 |
+
To become familiar with the plugin check [Quick Start](https://adinserter.pro/documentation/quick-start) to display ads on your website. Few important steps:
|
201 |
|
202 |
* Completely **disable AdBlocker!** You don't need it when working with ads! Ad blockers prevent displaying ads and also block all AdSense pages!
|
203 |
+
* [Code block](https://adinserter.pro/documentation/code-editing) is any code (for example for Google AdSense ads) that has to be inserted (and displayed) at some position. Each code block can be configured to insert code (or ads) at almost any position supported by Wordpress
|
204 |
* To rename block click on the name
|
205 |
+
* If you are using AdSense ads check available tools and code generator for [AdSense ads](https://adinserter.pro/documentation/adsense-ads)
|
206 |
+
* Paste ad code into the code window or use <a href="https://adinserter.pro/documentation/code-editing" target="_blank">code generator</a> to generate code for banners, AdSense ads or any other HTML advert
|
207 |
+
* **Enable and use at least one insertion option** (<a href="https://adinserter.pro/documentation/automatic-insertion" target="_blank">Automatic insertion</a>, Widget, <a href="https://adinserter.pro/documentation/manual-insertion" target="_blank">Shortcode</a>, PHP function call)
|
208 |
+
* **Enable insertion on at least one <a href="https://adinserter.pro/documentation/wordpress-page-types">Wordpress page type</a>** (Posts, Static pages, Homepage, Category pages, Search Pages, Archive pages)
|
209 |
* For Posts and Static pages **leave default BLANK selection value** after the checkbox unless you really know what are you doing (using individual exceptions)
|
210 |
+
* If you don't see inserted blocks or ads, turn on **debugging functions**: Label inserted blocks, Show available positions for automatic insertion (Ad Inserter menu item in the Wordpress admin toolbar on the top of every post/page when you are logged in). Check [Troubleshooting](https://adinserter.pro/documentation/troubleshooting) documentation for details.
|
211 |
+
* If you are using <a href="https://adinserter.pro/documentation/adsense-ads" target="_blank">AdSense ads</a> you may get blank (empty) ad blocks - no ads are displayed. This might happen because there is some error in the code (wrong IDs), your Google AdSense account is not fully approved yet, your website was not accepted or your Google AdSense account is banned. In such case you can try other ad networks for contextual ads. Check <a href="https://adinserter.pro/documentation/adsense-ads#ads-not-displayed">Ads Not Displayed</a> for more information.
|
212 |
|
213 |
+
Few typical settings are described on the <a href="https://adinserter.pro/documentation/common-settings" target="_blank">Common Settings</a> page. Please make sure you have also read <a href="https://adinserter.pro/documentation/plugin-installation">plugin installation</a> documentation. For more detailed instructions please read <a href="https://adinserter.pro/documentation" target="_blank">Ad Inserter documentation pages</a>.
|
214 |
|
215 |
**Insert Any Code Anywhere on the Page - Automate Insertion of Ads**
|
216 |
|
221 |
* Insertion with widgets
|
222 |
* Insertion by placing PHP function calls or custom hooks in your theme files
|
223 |
|
224 |
+
Ad Inserter is **the only WordPress plugin that can insert any code or ads anywhere on the page**. If standard insertions before/after post, content or paragraph can't be used, you can use advanced insertion [before/after arbitrary HTML element](https://adinserter.pro/documentation/automatic-insertion#before-after-html-element).
|
225 |
|
226 |
If you can create a CSS slector for the page element (#id, .class) then you can insert ads before or after that element. By default this approach uses client-side insertion using Javascript to insert code block after the page loads.
|
227 |
|
239 |
|
240 |
* Write a short <a href="https://wordpress.org/support/plugin/ad-inserter/reviews/">review</a>
|
241 |
* <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LHGZEMRTR7WB4">Donate</a> if Ad Inserter helps you to make money with ads
|
242 |
+
* Buy license for [Ad Inserter Pro](https://adinserter.pro/) - Top WordPress plugin for ads
|
243 |
|
244 |
== Installation ==
|
245 |
|
287 |
When you deactivate Ad Inserter it can't insert anything as WordPress doesn't call it. If you still see ads please clear all the caches and check page source code before you make any conclusion.
|
288 |
Of course, if you configure code block with some javacript ad code, then this code may generate ads. But please, don't blame the plugin for this.
|
289 |
You can also use Ad Inserter to insert code for AdSense Auto ads on each page (usually in the header). However, **the exact placement of ads will be done by the ad code, not Ad Inserter!**
|
290 |
+
[https://adinserter.pro/documentation/adsense-ads#auto-ads](https://adinserter.pro/documentation/adsense-ads#auto-ads)
|
291 |
|
292 |
The easiest way to check Ad Inserter code blocks or ads is to use **Label blocks** debugging function:
|
293 |
+
[https://adinserter.pro/documentation/debugging](https://adinserter.pro/documentation/debugging)
|
294 |
|
295 |
When you deactivate Ad Inserter it can't insert anything - WordPress doesn't call it. If you still see some ads that were inserted by Ad Inserter, make sure you have cleared all the caches.
|
296 |
If you still see those ads after you have disabled Ad Inserter and cleared all the caches, then the ads were not inserted by Ad Inserter.
|
298 |
|
299 |
**Online Documentation**
|
300 |
|
|
|
|
|
301 |
* [Ad Inserter Documentation](https://adinserter.pro/documentation)
|
302 |
+
* [Ads not displayed](https://adinserter.pro/documentation/troubleshooting#ads-not-displayed)
|
303 |
+
* [Troubleshooting](https://adinserter.pro/documentation/troubleshooting)
|
304 |
+
* [Code Editing](https://adinserter.pro/documentation/code-editing)
|
305 |
+
* [Common Settings](https://adinserter.pro/documentation/common-settings)
|
306 |
+
* [Automatic Insertion](https://adinserter.pro/documentation/automatic-insertion)
|
307 |
+
* [Block Alignment and Style](https://adinserter.pro/documentation/alignments-and-styles)
|
308 |
+
* [AdSense Ads](https://adinserter.pro/documentation/adsense-ads)
|
309 |
+
* [WordPress Page Types](https://adinserter.pro/documentation/wordpress-page-types)
|
310 |
+
* [Black and White Lists](https://adinserter.pro/documentation/black-and-white-lists)
|
311 |
+
* [Post and Page Exceptions](https://adinserter.pro/documentation/individual-post-and-page-exceptions)
|
312 |
+
* [Debugging](https://adinserter.pro/documentation/debugging)
|
313 |
|
314 |
|
315 |
== Frequently Asked Questions ==
|
322 |
4. Set automatic insertion option (for example: Before Post)
|
323 |
5. Enable at least one page type (for example: Posts, some insertion options don't work on all page types)
|
324 |
6. Save settings
|
325 |
+
7. Check also <a href="https://adinserter.pro/documentation/common-settings" target="_blank">common Ad Inserter settings</a>
|
326 |
8. Check inserted code on the posts
|
327 |
+
9. Ads are not showing? Check <a href="https://adinserter.pro/documentation/troubleshooting#ads-not-displayed" target="_blank">troubleshooting guide</a> to find out what to check to fix the problem.
|
328 |
|
329 |
|
330 |
= Does Ad Inserter insert any internal ads? =
|
333 |
Ad Inserter is free, open source plugin and inserts only the code you configure (blocks 1 - 16, Header, Footer). The code you see is the code that will be inserted. Please check page source code before you make any conclusion.
|
334 |
Of course, if you configure code block with some javacript ad code, then this code may generate ads. But please, don't blame the plugin for this.
|
335 |
You can also use Ad Inserter to insert code for AdSense Auto ads on each page (usually in the header). However, **the exact placement of ads will be done by the ad code, not Ad Inserter!**
|
336 |
+
[https://adinserter.pro/documentation/adsense-ads#auto-ads](https://adinserter.pro/documentation/adsense-ads#auto-ads)
|
337 |
|
338 |
The easiest way to check Ad Inserter code blocks is to use **Label blocks** debugging function:
|
339 |
+
[https://adinserter.pro/documentation/debugging](https://adinserter.pro/documentation/debugging)
|
340 |
|
341 |
|
342 |
= I have installed code for AdSense ads and I see ads placed at random positions. =
|
343 |
|
344 |
+
You are probably using code for [AdSense Auto ads](https://adinserter.pro/documentation/adsense-ads#auto-ads).
|
345 |
|
346 |
AdSense Auto ads (known also as Page Level Ads) is a code that you insert on every page once and it will automatically display AdSense ads on positions chosen by the code.
|
347 |
Auto ads use Google's machine learning to pick the best placements on your pages to show ads. You only need to add one piece of code to all your pages, and let Google take care of the rest.
|
348 |
|
349 |
+
Auto ads may not be suitable for some WordPress themes or layouts. In such cases it is easier to place ads at wanted locations by using [normal AdSense code](https://adinserter.pro/documentation/adsense-ads#ad-unit) and specifying exact locations where the code should be inserted.
|
350 |
|
351 |
= I have installed code for AdSense ads but the ad blocks are blank. =
|
352 |
|
361 |
* Errors in ad code - check or regenerate ad code
|
362 |
* You are using ad blocker
|
363 |
|
364 |
+
In such case you can try other ad networks for contextual ads. Check <a href="https://adinserter.pro/documentation/troubleshooting#ads-not-displayed">Ads Not Displayed</a> for more information.
|
365 |
|
366 |
= What is GDPR? =
|
367 |
|
387 |
|
388 |
= How to show ads based on visitor's consent? =
|
389 |
|
390 |
+
Ad Inserter supports inserting (showing) ads based on cookies or cookie values. You can define cookie conditions by black/white-listing *Url parameters* (where also [cookies are checked](https://adinserter.pro/documentation/black-and-white-lists#cookies)).
|
391 |
|
392 |
PLEASE NOTE: If you are using caching (very likely) you also need to set **Dynamic blocks** to **Client-side insert** (tab ⚙ / tab General) in order to check cookies in visitor's browser and not when the page is generated.
|
393 |
|
446 |
|
447 |
= Settings for ads ... =
|
448 |
|
449 |
+
Check <a href="https://adinserter.pro/documentation/common-settings" target="_blank">common Ad Inserter settings</a>
|
450 |
|
451 |
|
452 |
= What PHP versions are supported? =
|
519 |
3a. Click on Lists, enter post IDs (click on the button left of the list) and white-list or black-list them.
|
520 |
3b. Click on Lists, enter url (or comma separated urls) for Urls, e.g. `/permalink-url`, and white-list or black-list it.
|
521 |
|
522 |
+
For details check <a href="https://adinserter.pro/documentation/individual-post-and-page-exceptions" target="_blank">Individual Post/Page Exceptions</a>.
|
523 |
|
524 |
|
525 |
= I'm using responsive theme. How can I show or hide some ads on mobile devices? =
|
608 |
* <a href="https://wordpress.org/plugins/wp-amp-ninja/" target="_blank">WP AMP Ninja</a> (free)
|
609 |
* WP AMP - Accelerated Mobile Pages for WordPress (paid - you need to uncheck *Remove third-party the_content hooks for better compatibility*)
|
610 |
|
611 |
+
For details check <a href="https://adinserter.pro/documentation/amp-pages" target="_blank">settings for ads on AMP pages</a>.
|
612 |
|
613 |
|
614 |
= How can place ads below Read More tag? =
|
656 |
|
657 |
== Screenshots ==
|
658 |
|
659 |
+
1. Settings for one code block (Before content). Up to 16 blocks can be configured (up to 64 in <a href="https://adinserter.pro/" target="_blank">Ad Inserter Pro</a>)
|
660 |
2. Code preview with visual CSS editor
|
661 |
3. Code preview with visual CSS editor - highlighted code
|
662 |
4. Post / Page Ad Inserter Individual Exceptions
|
663 |
+
5. Some <a href="https://adinserter.pro/" target="_blank">Ad Inserter Pro</a> features: IP address and country lists, Scheduling between dates with fallback
|
664 |
6. Ad Inserter plugin settings
|
665 |
7. Visualization of HTML tags in post
|
666 |
8. Visualization of positions for automatic insertion in post
|
677 |
|
678 |
== Changelog ==
|
679 |
|
680 |
+
= 2.3.17 =
|
681 |
+
- Added shortcode for ad blocking detection action
|
682 |
+
- Few minor bug fixes, cosmetic changes and code improvements
|
683 |
+
|
684 |
= 2.3.16 =
|
685 |
- Added option to insert block only when WP loop is currently active
|
686 |
- Added support for Better AMP plugin
|
785 |
|
786 |
== Upgrade Notice ==
|
787 |
|
788 |
+
= 2.3.17 =
|
789 |
+
Added shortcode for ad blocking detection action;
|
790 |
+
Few minor bug fixes, cosmetic changes and code improvements
|
791 |
+
|
792 |
= 2.3.16 =
|
793 |
Added option to insert block only when WP loop is currently active;
|
794 |
Added support for Better AMP plugin;
|
settings.php
CHANGED
@@ -2033,7 +2033,7 @@ function generate_settings_form (){
|
|
2033 |
Ad label
|
2034 |
</td>
|
2035 |
<td>
|
2036 |
-
<input type="text" name="ad-label" style="width: 100%;" value="<?php echo get_ad_label (); ?>" default="<?php echo DEFAULT_AD_TITLE; ?>" size="60" maxlength="500" />
|
2037 |
</td>
|
2038 |
</tr>
|
2039 |
<tr>
|
@@ -3582,6 +3582,7 @@ function sidebar_pro () {
|
|
3582 |
<li><a href="http://adinserter.pro/documentation#visualization" class="simple-link" target="_blank">Visualization</a> of available positions for automatic ad insertion</li>
|
3583 |
<li><a href="http://adinserter.pro/documentation#visualization" class="simple-link" target="_blank">Visualization</a> of HTML tags for easier ad placement between paragraphs</li>
|
3584 |
<li><a href="https://adinserter.pro/code-editing#clipboard" class="simple-link" target="_blank">Clipboard support</a> to easily copy code blocks or settings</li>
|
|
|
3585 |
<li>Support via email</li>
|
3586 |
</ul>
|
3587 |
|
2033 |
Ad label
|
2034 |
</td>
|
2035 |
<td>
|
2036 |
+
<input type="text" name="ad-label" style="width: 100%;" value="<?php echo get_ad_label (); ?>" default="<?php echo DEFAULT_AD_TITLE; ?>" title="Label text or HTML code" size="60" maxlength="500" />
|
2037 |
</td>
|
2038 |
</tr>
|
2039 |
<tr>
|
3582 |
<li><a href="http://adinserter.pro/documentation#visualization" class="simple-link" target="_blank">Visualization</a> of available positions for automatic ad insertion</li>
|
3583 |
<li><a href="http://adinserter.pro/documentation#visualization" class="simple-link" target="_blank">Visualization</a> of HTML tags for easier ad placement between paragraphs</li>
|
3584 |
<li><a href="https://adinserter.pro/code-editing#clipboard" class="simple-link" target="_blank">Clipboard support</a> to easily copy code blocks or settings</li>
|
3585 |
+
<li>No ads on the settings page</li>
|
3586 |
<li>Support via email</li>
|
3587 |
</ul>
|
3588 |
|