Advanced Ads - Version 1.22.1

Version Description

  • removed "Disable shortcode button" setting after it became obsolete in 1.22.0
  • added the advanced-ads-disable-shortcode-button filter to disable the shortcode button
  • removed ads.txt-related warnings when the option is disabled
  • fixed issue with loading of shortcode button in editors that disabled custom buttons, e.g., Elementor
  • fixed JavaScript warnings in Elementor editor
Download this release

Release Info

Developer advancedads
Plugin Icon 128x128 Advanced Ads
Version 1.22.1
Comparing to
See all releases

Code changes from version 1.22.0 to 1.22.1

admin/includes/class-meta-box.php CHANGED
@@ -211,7 +211,7 @@ class Advanced_Ads_Admin_Meta_Boxes {
211
  $margin = isset( $ad_options['margin'] ) ? $ad_options['margin'] : array();
212
  $wrapper_id = isset( $ad_options['wrapper-id'] ) ? $ad_options['wrapper-id'] : '';
213
  $wrapper_class = isset( $ad_options['wrapper-class'] ) ? $ad_options['wrapper-class'] : '';
214
- $debug_mode_enabled = isset( $ad_options['debugmode'] ) ? true : false;
215
  $view = 'ad-output-metabox.php';
216
  break;
217
  case 'ad-display-box':
211
  $margin = isset( $ad_options['margin'] ) ? $ad_options['margin'] : array();
212
  $wrapper_id = isset( $ad_options['wrapper-id'] ) ? $ad_options['wrapper-id'] : '';
213
  $wrapper_class = isset( $ad_options['wrapper-class'] ) ? $ad_options['wrapper-class'] : '';
214
+ $debug_mode_enabled = (bool) $ad->options( 'output.debugmode' );
215
  $view = 'ad-output-metabox.php';
216
  break;
217
  case 'ad-display-box':
admin/includes/class-settings.php CHANGED
@@ -244,15 +244,6 @@ class Advanced_Ads_Admin_Settings {
244
  );
245
  }
246
 
247
- // allow to disable shortcode button in TinyMCE.
248
- add_settings_field(
249
- 'disable-shortcode-button',
250
- __( 'Disable shortcode button', 'advanced-ads' ),
251
- array( $this, 'render_settings_disable_shortcode_button' ),
252
- $hook,
253
- 'advanced_ads_setting_section'
254
- );
255
-
256
  // hook for additional settings from add-ons.
257
  do_action( 'advanced-ads-settings-init', $hook );
258
  }
@@ -563,17 +554,6 @@ class Advanced_Ads_Admin_Settings {
563
  include ADVADS_BASE_PATH . 'admin/views/settings/general/uninstall-delete-data.php';
564
  }
565
 
566
- /**
567
- * Render setting to disable shortcode button.
568
- */
569
- public function render_settings_disable_shortcode_button() {
570
- $options = Advanced_Ads::get_instance()->options();
571
-
572
- $checked = ! empty( $options['disable-shortcode-button'] );
573
-
574
- include ADVADS_BASE_PATH . 'admin/views/settings/general/disable-shortcode-button.php';
575
- }
576
-
577
  /**
578
  * Sanitize plugin settings
579
  *
244
  );
245
  }
246
 
 
 
 
 
 
 
 
 
 
247
  // hook for additional settings from add-ons.
248
  do_action( 'advanced-ads-settings-init', $hook );
249
  }
554
  include ADVADS_BASE_PATH . 'admin/views/settings/general/uninstall-delete-data.php';
555
  }
556
 
 
 
 
 
 
 
 
 
 
 
 
557
  /**
558
  * Sanitize plugin settings
559
  *
admin/includes/class-shortcode-creator.php CHANGED
@@ -40,17 +40,63 @@ class Advanced_Ads_Shortcode_Creator {
40
  if ( 'true' !== get_user_option( 'rich_editing' )
41
  || ! current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_place_ads' ) )
42
  || defined( 'ADVANCED_ADS_DISABLE_SHORTCODE_BUTTON' )
43
- || ! empty( $options['disable-shortcode-button'] )
44
  ) {
45
  return;
46
  }
47
 
48
-
49
- add_filter( 'mce_buttons', array( $this, 'register_buttons' ) );
50
  add_action( 'wp_ajax_advads_content_for_shortcode_creator', array( $this, 'get_content_for_shortcode_creator' ) );
51
 
 
 
52
  add_filter( 'tiny_mce_plugins', array( $this, 'tiny_mce_plugins' ) );
53
- add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  }
55
 
56
  /**
@@ -63,6 +109,10 @@ class Advanced_Ads_Shortcode_Creator {
63
  * @return array $plugins An array of default TinyMCE plugins.
64
  */
65
  public function tiny_mce_plugins( $plugins ) {
 
 
 
 
66
  $plugins[] = 'advads_shortcode';
67
  return $plugins;
68
  }
@@ -88,6 +138,9 @@ class Advanced_Ads_Shortcode_Creator {
88
  * @return array
89
  */
90
  public function register_buttons( $buttons ) {
 
 
 
91
  if ( ! is_array( $buttons ) ) {
92
  $buttons = array();
93
  }
40
  if ( 'true' !== get_user_option( 'rich_editing' )
41
  || ! current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_place_ads' ) )
42
  || defined( 'ADVANCED_ADS_DISABLE_SHORTCODE_BUTTON' )
43
+ || apply_filters( 'advanced-ads-disable-shortcode-button', false )
44
  ) {
45
  return;
46
  }
47
 
 
 
48
  add_action( 'wp_ajax_advads_content_for_shortcode_creator', array( $this, 'get_content_for_shortcode_creator' ) );
49
 
50
+ // @see self::hooks_exist
51
+ add_filter( 'mce_buttons', array( $this, 'register_buttons' ) );
52
  add_filter( 'tiny_mce_plugins', array( $this, 'tiny_mce_plugins' ) );
53
+ add_action( 'wp_tiny_mce_init', array( $this, 'print_shortcode_plugin' ) );
54
+ }
55
+
56
+ /**
57
+ * Check if needed actions and filters have not been removed by a plugin.
58
+ *
59
+ * @return array
60
+ */
61
+ private function hooks_exist() {
62
+ if ( has_action( 'wp_tiny_mce_init', array( $this, 'print_shortcode_plugin' ) )
63
+ && has_filter( 'mce_buttons', array( $this, 'register_buttons' ) )
64
+ && has_filter( 'tiny_mce_plugins', array( $this, 'tiny_mce_plugins' ) ) ) {
65
+ return true;
66
+ }
67
+ return false;
68
+ }
69
+
70
+ /**
71
+ * Print shortcode plugin inline.
72
+ */
73
+ public function print_shortcode_plugin() {
74
+ if ( ! $this->hooks_exist() ) {
75
+ return;
76
+ }
77
+
78
+ // phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped
79
+ echo "<script>\n"
80
+ . $this->get_l10n() . "\n"
81
+ . file_get_contents( ADVADS_BASE_PATH . 'admin/assets/js/shortcode.js' ) . "\n"
82
+ . "</script>\n";
83
+ // phpcs:enable
84
+ }
85
+
86
+ /**
87
+ * Get localization strings.
88
+ *
89
+ * @return string
90
+ */
91
+ private function get_l10n() {
92
+ static $script = null;
93
+
94
+ if ( null === $script ) {
95
+ include_once ADVADS_BASE_PATH . 'admin/includes/shortcode-creator-l10n.php';
96
+ $script = $strings;
97
+ }
98
+
99
+ return $script;
100
  }
101
 
102
  /**
109
  * @return array $plugins An array of default TinyMCE plugins.
110
  */
111
  public function tiny_mce_plugins( $plugins ) {
112
+ if ( ! $this->hooks_exist() ) {
113
+ return $plugins;
114
+ }
115
+
116
  $plugins[] = 'advads_shortcode';
117
  return $plugins;
118
  }
138
  * @return array
139
  */
140
  public function register_buttons( $buttons ) {
141
+ if ( ! $this->hooks_exist() ) {
142
+ return $buttons;
143
+ }
144
  if ( ! is_array( $buttons ) ) {
145
  $buttons = array();
146
  }
admin/views/settings/general/disable-shortcode-button.php DELETED
@@ -1,2 +0,0 @@
1
- <input id="advanced-ads-disable-shortcode-button" type="checkbox" <?php checked( $checked, true ); ?> name="<?php echo esc_attr( ADVADS_SLUG ); ?>[disable-shortcode-button]" />
2
- <p class="description"><?php esc_html_e( 'Disable shortcode button in visual editor.', 'advanced-ads' ); ?></p>
 
 
advanced-ads.php CHANGED
@@ -12,7 +12,7 @@
12
  * Plugin Name: Advanced Ads
13
  * Plugin URI: https://wpadvancedads.com
14
  * Description: Manage and optimize your ads in WordPress
15
- * Version: 1.22.0
16
  * Author: Thomas Maier, Advanced Ads GmbH
17
  * Author URI: https://wpadvancedads.com
18
  * Text Domain: advanced-ads
@@ -39,7 +39,7 @@ define( 'ADVADS_BASE_DIR', dirname( ADVADS_BASE ) ); // directory of the plugin
39
  // general and global slug, e.g. to store options in WP.
40
  define( 'ADVADS_SLUG', 'advanced-ads' );
41
  define( 'ADVADS_URL', 'https://wpadvancedads.com/' );
42
- define( 'ADVADS_VERSION', '1.22.0' );
43
 
44
  // Autoloading, modules and functions.
45
 
12
  * Plugin Name: Advanced Ads
13
  * Plugin URI: https://wpadvancedads.com
14
  * Description: Manage and optimize your ads in WordPress
15
+ * Version: 1.22.1
16
  * Author: Thomas Maier, Advanced Ads GmbH
17
  * Author URI: https://wpadvancedads.com
18
  * Text Domain: advanced-ads
39
  // general and global slug, e.g. to store options in WP.
40
  define( 'ADVADS_SLUG', 'advanced-ads' );
41
  define( 'ADVADS_URL', 'https://wpadvancedads.com/' );
42
+ define( 'ADVADS_VERSION', '1.22.1' );
43
 
44
  // Autoloading, modules and functions.
45
 
classes/ad.php CHANGED
@@ -357,7 +357,7 @@ class Advanced_Ads_Ad {
357
  // switch between normal and debug mode.
358
  // check if debug output should only be displayed to admins.
359
  $user_can_manage_ads = current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_manage_options' ) );
360
- if ( isset( $this->output['debugmode'] )
361
  && ( $user_can_manage_ads || ( ! $user_can_manage_ads && ! defined( 'ADVANCED_ADS_AD_DEBUG_FOR_ADMIN_ONLY' ) ) ) ) {
362
  $debug = new Advanced_Ads_Ad_Debug();
363
 
357
  // switch between normal and debug mode.
358
  // check if debug output should only be displayed to admins.
359
  $user_can_manage_ads = current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_manage_options' ) );
360
+ if ( $this->options( 'output.debugmode' )
361
  && ( $user_can_manage_ads || ( ! $user_can_manage_ads && ! defined( 'ADVANCED_ADS_AD_DEBUG_FOR_ADMIN_ONLY' ) ) ) ) {
362
  $debug = new Advanced_Ads_Ad_Debug();
363
 
classes/frontend_checks.php CHANGED
@@ -14,16 +14,22 @@ class Advanced_Ads_Frontend_Checks {
14
  private $did_the_content = false;
15
  private $has_many_the_content = false;
16
 
 
 
 
17
  public function __construct() {
18
- add_action( 'init', array( $this, 'init' ) );
 
 
 
 
 
19
  }
20
 
21
  /**
22
  * Ad Health init.
23
  */
24
  public function init() {
25
- $enabled = false;
26
-
27
  if ( ! is_admin()
28
  && is_admin_bar_showing()
29
  && current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_edit_ads' ) )
@@ -31,19 +37,15 @@ class Advanced_Ads_Frontend_Checks {
31
  ) {
32
  add_action( 'admin_bar_menu', array( $this, 'add_admin_bar_menu' ), 1000 );
33
  add_filter( 'the_content', array( $this, 'set_did_the_content' ) );
34
- add_filter( 'wp_footer', array( $this, 'footer_checks' ), -101 );
35
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
36
  add_filter( 'advanced-ads-ad-select-args', array( $this, 'ad_select_args_callback' ) );
37
- $enabled = true;
38
  }
39
 
40
  if ( Advanced_Ads_Ad_Health_Notices::notices_enabled() ) {
41
  add_action( 'body_class', array( $this, 'body_class' ) );
42
  }
43
-
44
- if ( $enabled || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
45
- add_filter( 'advanced-ads-ad-output', array( $this, 'after_ad_output' ), 10, 2 );
46
- }
47
  }
48
 
49
  /**
14
  private $did_the_content = false;
15
  private $has_many_the_content = false;
16
 
17
+ /**
18
+ * Constructor.
19
+ */
20
  public function __construct() {
21
+ // Wait until other plugins (for example Elementor) have disabled admin bar using `show_admin_bar` filter.
22
+ add_action( 'template_redirect', array( $this, 'init' ), 11 );
23
+
24
+ if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
25
+ add_filter( 'advanced-ads-ad-output', array( $this, 'after_ad_output' ), 10, 2 );
26
+ }
27
  }
28
 
29
  /**
30
  * Ad Health init.
31
  */
32
  public function init() {
 
 
33
  if ( ! is_admin()
34
  && is_admin_bar_showing()
35
  && current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_edit_ads' ) )
37
  ) {
38
  add_action( 'admin_bar_menu', array( $this, 'add_admin_bar_menu' ), 1000 );
39
  add_filter( 'the_content', array( $this, 'set_did_the_content' ) );
40
+ add_action( 'wp_footer', array( $this, 'footer_checks' ), -101 );
41
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
42
  add_filter( 'advanced-ads-ad-select-args', array( $this, 'ad_select_args_callback' ) );
43
+ add_filter( 'advanced-ads-ad-output', array( $this, 'after_ad_output' ), 10, 2 );
44
  }
45
 
46
  if ( Advanced_Ads_Ad_Health_Notices::notices_enabled() ) {
47
  add_action( 'body_class', array( $this, 'body_class' ) );
48
  }
 
 
 
 
49
  }
50
 
51
  /**
classes/plugin.php CHANGED
@@ -471,14 +471,6 @@ class Advanced_Ads_Plugin {
471
  $this->options = get_option( ADVADS_SLUG, array() );
472
  }
473
 
474
- // default options for new users
475
- if ( array() === $this->options ) {
476
- // disable the shortcode button by default for users who never stored the settings.
477
- if ( ! isset( $this->options['disable-shortcode-button'] ) ) {
478
- $this->options['disable-shortcode-button'] = true;
479
- }
480
- }
481
-
482
  // allow to change options dynamically
483
  $this->options = apply_filters( 'advanced-ads-options', $this->options );
484
 
471
  $this->options = get_option( ADVADS_SLUG, array() );
472
  }
473
 
 
 
 
 
 
 
 
 
474
  // allow to change options dynamically
475
  $this->options = apply_filters( 'advanced-ads-options', $this->options );
476
 
languages/advanced-ads.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the Advanced Ads plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Advanced Ads 1.22.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/advanced-ads/\n"
7
  "Last-Translator: Thomas Maier <post@webzunft.de>\n"
8
  "Language-Team: webgilde <support@wpadvancedads.com>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2020-12-09T08:49:17+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: advanced-ads\n"
@@ -154,23 +154,23 @@ msgstr ""
154
 
155
  #. translators: %s is empty here, but the string will be followed by a name of an ad unit.
156
  #: admin/includes/ad-health-notices.php:111
157
- #: classes/frontend_checks.php:263
158
  msgid "Visible ads should not use the Header placement: %s"
159
  msgstr ""
160
 
161
  #: admin/includes/ad-health-notices.php:125
162
- #: classes/frontend_checks.php:277
163
  msgid "AdSense violation"
164
  msgstr ""
165
 
166
  #: admin/includes/ad-health-notices.php:126
167
- #: classes/frontend_checks.php:278
168
  msgid "Ad is hidden"
169
  msgstr ""
170
 
171
  #: admin/includes/ad-health-notices.php:135
172
  #: classes/ad-debug.php:272
173
- #: classes/frontend_checks.php:250
174
  msgid "Your website is using HTTPS, but the ad code contains HTTP and might not work."
175
  msgstr ""
176
 
@@ -426,7 +426,7 @@ msgid "You don’t have access to ads. Please deactivate and re-enable Advanced
426
  msgstr ""
427
 
428
  #: admin/includes/class-ad-type.php:921
429
- #: classes/frontend_checks.php:507
430
  msgid "Get help"
431
  msgstr ""
432
 
@@ -536,7 +536,7 @@ msgstr ""
536
 
537
  #: admin/includes/class-menu.php:80
538
  #: admin/includes/class-menu.php:81
539
- #: admin/includes/class-shortcode-creator.php:111
540
  #: admin/views/ad-group-list-form-row.php:91
541
  #: admin/views/ad-group-list-header.php:16
542
  #: admin/views/placement-form.php:88
@@ -573,7 +573,7 @@ msgid "Ad Placements"
573
  msgstr ""
574
 
575
  #: admin/includes/class-menu.php:132
576
- #: admin/includes/class-shortcode-creator.php:125
577
  #: admin/views/placements.php:54
578
  #: classes/widget.php:115
579
  #: modules/gutenberg/includes/class-gutenberg.php:81
@@ -591,7 +591,7 @@ msgstr ""
591
 
592
  #: admin/includes/class-menu.php:176
593
  #: admin/includes/class-menu.php:180
594
- #: admin/includes/class-settings.php:272
595
  msgid "Licenses"
596
  msgstr ""
597
 
@@ -969,35 +969,31 @@ msgstr ""
969
  msgid "Delete data on uninstall"
970
  msgstr ""
971
 
972
- #: admin/includes/class-settings.php:250
973
- msgid "Disable shortcode button"
974
- msgstr ""
975
-
976
- #: admin/includes/class-settings.php:291
977
  msgid "Pro"
978
  msgstr ""
979
 
980
- #: admin/includes/class-settings.php:309
981
  #: admin/views/upgrades/tracking.php:2
982
  msgid "Tracking"
983
  msgstr ""
984
 
985
- #: admin/includes/class-settings.php:355
986
  msgid "Are you missing something?"
987
  msgstr ""
988
 
989
- #: admin/includes/class-settings.php:531
990
  msgctxt "label before ads"
991
  msgid "Advertisements"
992
  msgstr ""
993
 
994
- #: admin/includes/class-shortcode-creator.php:109
995
  #: classes/widget.php:113
996
  #: modules/gutenberg/includes/class-gutenberg.php:77
997
  msgid "--empty--"
998
  msgstr ""
999
 
1000
- #: admin/includes/class-shortcode-creator.php:118
1001
  #: admin/views/placement-form.php:81
1002
  #: admin/views/placements-item.php:14
1003
  #: classes/widget.php:122
@@ -2137,7 +2133,7 @@ msgid "Enable advanced JavaScript functions (<a href=\"%s\" target=\"_blank\">he
2137
  msgstr ""
2138
 
2139
  #: admin/views/settings/general/block-bots.php:5
2140
- #: classes/frontend_checks.php:121
2141
  msgid "You look like a bot"
2142
  msgstr ""
2143
 
@@ -2214,10 +2210,6 @@ msgstr ""
2214
  msgid "The free version provides the post type display condition on the ad edit page."
2215
  msgstr ""
2216
 
2217
- #: admin/views/settings/general/disable-shortcode-button.php:2
2218
- msgid "Disable shortcode button in visual editor."
2219
- msgstr ""
2220
-
2221
  #: admin/views/settings/general/editors-manage-ads.php:2
2222
  msgid "Allow editors to also manage and publish ads."
2223
  msgstr ""
@@ -2928,165 +2920,165 @@ msgstr ""
2928
  msgid "Unable to locate needed folder (%s)."
2929
  msgstr ""
2930
 
2931
- #: classes/frontend_checks.php:107
2932
  msgid "Random AdSense ads"
2933
  msgstr ""
2934
 
2935
- #: classes/frontend_checks.php:135
2936
  msgid "Ad blocker enabled"
2937
  msgstr ""
2938
 
2939
- #: classes/frontend_checks.php:147
2940
  msgid "<em>%s</em> filter does not exist"
2941
  msgstr ""
2942
 
2943
- #: classes/frontend_checks.php:163
2944
  msgid "Ads are disabled in the content of this page"
2945
  msgstr ""
2946
 
2947
- #: classes/frontend_checks.php:175
2948
  msgid "the current post ID is 0 "
2949
  msgstr ""
2950
 
2951
- #: classes/frontend_checks.php:194
2952
  msgid "Ads are disabled on this page"
2953
  msgstr ""
2954
 
2955
- #: classes/frontend_checks.php:208
2956
  msgid "Ads are disabled on all pages"
2957
  msgstr ""
2958
 
2959
- #: classes/frontend_checks.php:223
2960
  msgid "Ads are disabled on 404 pages"
2961
  msgstr ""
2962
 
2963
- #: classes/frontend_checks.php:237
2964
  msgid "Ads are disabled on non singular pages"
2965
  msgstr ""
2966
 
2967
- #: classes/frontend_checks.php:251
2968
  msgid "Ad IDs: %s"
2969
  msgstr ""
2970
 
2971
- #: classes/frontend_checks.php:279
2972
  msgid "IDs: %s"
2973
  msgstr ""
2974
 
2975
- #: classes/frontend_checks.php:292
2976
  msgid "The following responsive AdSense ads are not showing up: %s"
2977
  msgstr ""
2978
 
2979
- #: classes/frontend_checks.php:306
2980
  msgid "Consent not given"
2981
  msgstr ""
2982
 
2983
- #: classes/frontend_checks.php:322
2984
  msgid "Enable TCF integration"
2985
  msgstr ""
2986
 
2987
- #: classes/frontend_checks.php:335
2988
  msgid "Debug Google Ad Manager"
2989
  msgstr ""
2990
 
2991
- #: classes/frontend_checks.php:346
2992
  msgid "Auto ads code found"
2993
  msgstr ""
2994
 
2995
- #: classes/frontend_checks.php:358
2996
  msgid "highlight ads"
2997
  msgstr ""
2998
 
2999
- #: classes/frontend_checks.php:465
3000
  msgid "Ad Health"
3001
  msgstr ""
3002
 
3003
- #: classes/frontend_checks.php:479
3004
  msgid "Show %d more notifications"
3005
  msgstr ""
3006
 
3007
- #: classes/frontend_checks.php:496
3008
  msgid "Everything is fine"
3009
  msgstr ""
3010
 
3011
- #: classes/frontend_checks.php:564
3012
  msgid "the following code is used for automatic error detection and only visible to admins"
3013
  msgstr ""
3014
 
3015
- #: classes/frontend_checks.php:882
3016
- #: classes/frontend_checks.php:897
3017
  msgid "Hi %s"
3018
  msgstr ""
3019
 
3020
- #: classes/frontend_checks.php:882
3021
  msgid "Advanced Ads detected AdSense Auto ads (%sx) on this page."
3022
  msgstr ""
3023
 
3024
- #: classes/frontend_checks.php:882
3025
- #: classes/frontend_checks.php:897
3026
  msgid "Is that correct?"
3027
  msgstr ""
3028
 
3029
- #: classes/frontend_checks.php:884
3030
  msgid "All is fine"
3031
  msgstr ""
3032
 
3033
- #: classes/frontend_checks.php:885
3034
  msgid "Something is off"
3035
  msgstr ""
3036
 
3037
- #: classes/frontend_checks.php:887
3038
- #: classes/frontend_checks.php:902
3039
  msgid "PS: This is a one-time check from your friendly Advanced Ads plugin. It is only visible to you."
3040
  msgstr ""
3041
 
3042
- #: classes/frontend_checks.php:897
3043
  msgid "Advanced Ads detected the AdSense Auto ads code and <strong>no ads on this page</strong>."
3044
  msgstr ""
3045
 
3046
- #: classes/frontend_checks.php:899
3047
  msgid "This is fine"
3048
  msgstr ""
3049
 
3050
- #: classes/frontend_checks.php:900
3051
  msgid "I expected something else"
3052
  msgstr ""
3053
 
3054
- #: classes/frontend_checks.php:905
3055
- #: classes/frontend_checks.php:913
3056
  msgid "Just click on your problem to learn more from our knowledge base."
3057
  msgstr ""
3058
 
3059
- #: classes/frontend_checks.php:906
3060
  msgid "I want to disable AdSense Auto ads"
3061
  msgstr ""
3062
 
3063
- #: classes/frontend_checks.php:907
3064
- #: classes/frontend_checks.php:914
3065
  msgid "I don’t see any Auto ads"
3066
  msgstr ""
3067
 
3068
- #: classes/frontend_checks.php:908
3069
  msgid "I only see blank space"
3070
  msgstr ""
3071
 
3072
- #: classes/frontend_checks.php:909
3073
  msgid "I want to change the position of the ads"
3074
  msgstr ""
3075
 
3076
- #: classes/frontend_checks.php:910
3077
  #: modules/gadsense/includes/class-network-adsense.php:228
3078
  msgid "Display Auto ads only on specific pages"
3079
  msgstr ""
3080
 
3081
- #: classes/frontend_checks.php:915
3082
  msgid "How to look for the Auto ads code"
3083
  msgstr ""
3084
 
3085
- #: classes/frontend_checks.php:916
3086
  msgid "I have another question or problem"
3087
  msgstr ""
3088
 
3089
- #: classes/frontend_checks.php:919
3090
  msgid "Closing the message"
3091
  msgstr ""
3092
 
@@ -3201,7 +3193,7 @@ msgid "Ad blocker fix"
3201
  msgstr ""
3202
 
3203
  #: modules/ad-blocker/admin/admin.php:150
3204
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:367
3205
  msgid "Unable to connect to the filesystem. Please confirm your credentials."
3206
  msgstr ""
3207
 
@@ -3288,49 +3280,49 @@ msgstr ""
3288
  msgid "Want to know how many of your visitors are using an ad blocker? Enter your Google Analytics property ID above to count them."
3289
  msgstr ""
3290
 
3291
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:181
3292
  msgid "The ads.txt file cannot be placed because the URL contains a subdirectory. You need to make the file available at %s"
3293
  msgstr ""
3294
 
3295
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:192
3296
  msgid "The file is available on %s."
3297
  msgstr ""
3298
 
3299
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:196
3300
  msgid "The file was not created."
3301
  msgstr ""
3302
 
3303
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:203
3304
  msgid "Import & Replace"
3305
  msgstr ""
3306
 
3307
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:205
3308
  msgid "Move the content of the existing ads.txt file into Advanced Ads and remove it."
3309
  msgstr ""
3310
 
3311
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:212
3312
  #: modules/ads-txt/admin/views/setting-additional-content.php:29
3313
  msgid "An error occured: %s."
3314
  msgstr ""
3315
 
3316
  #. translators: %s the line that may need to be added manually
3317
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:225
3318
  msgid "If your site is located on a subdomain, you need to add the following line to the ads.txt file of the root domain: %s"
3319
  msgstr ""
3320
 
3321
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:340
3322
  msgid "The ads.txt is now managed with Advanced Ads."
3323
  msgstr ""
3324
 
3325
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:385
3326
  msgid "Not the main blog"
3327
  msgstr ""
3328
 
3329
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:414
3330
  msgid "Could not delete the existing ads.txt file"
3331
  msgstr ""
3332
 
3333
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:417
3334
  msgid "Could not find the existing ads.txt file"
3335
  msgstr ""
3336
 
2
  # This file is distributed under the same license as the Advanced Ads plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Advanced Ads 1.22.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/advanced-ads/\n"
7
  "Last-Translator: Thomas Maier <post@webzunft.de>\n"
8
  "Language-Team: webgilde <support@wpadvancedads.com>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2020-12-14T10:29:01+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: advanced-ads\n"
154
 
155
  #. translators: %s is empty here, but the string will be followed by a name of an ad unit.
156
  #: admin/includes/ad-health-notices.php:111
157
+ #: classes/frontend_checks.php:265
158
  msgid "Visible ads should not use the Header placement: %s"
159
  msgstr ""
160
 
161
  #: admin/includes/ad-health-notices.php:125
162
+ #: classes/frontend_checks.php:279
163
  msgid "AdSense violation"
164
  msgstr ""
165
 
166
  #: admin/includes/ad-health-notices.php:126
167
+ #: classes/frontend_checks.php:280
168
  msgid "Ad is hidden"
169
  msgstr ""
170
 
171
  #: admin/includes/ad-health-notices.php:135
172
  #: classes/ad-debug.php:272
173
+ #: classes/frontend_checks.php:252
174
  msgid "Your website is using HTTPS, but the ad code contains HTTP and might not work."
175
  msgstr ""
176
 
426
  msgstr ""
427
 
428
  #: admin/includes/class-ad-type.php:921
429
+ #: classes/frontend_checks.php:509
430
  msgid "Get help"
431
  msgstr ""
432
 
536
 
537
  #: admin/includes/class-menu.php:80
538
  #: admin/includes/class-menu.php:81
539
+ #: admin/includes/class-shortcode-creator.php:164
540
  #: admin/views/ad-group-list-form-row.php:91
541
  #: admin/views/ad-group-list-header.php:16
542
  #: admin/views/placement-form.php:88
573
  msgstr ""
574
 
575
  #: admin/includes/class-menu.php:132
576
+ #: admin/includes/class-shortcode-creator.php:178
577
  #: admin/views/placements.php:54
578
  #: classes/widget.php:115
579
  #: modules/gutenberg/includes/class-gutenberg.php:81
591
 
592
  #: admin/includes/class-menu.php:176
593
  #: admin/includes/class-menu.php:180
594
+ #: admin/includes/class-settings.php:263
595
  msgid "Licenses"
596
  msgstr ""
597
 
969
  msgid "Delete data on uninstall"
970
  msgstr ""
971
 
972
+ #: admin/includes/class-settings.php:282
 
 
 
 
973
  msgid "Pro"
974
  msgstr ""
975
 
976
+ #: admin/includes/class-settings.php:300
977
  #: admin/views/upgrades/tracking.php:2
978
  msgid "Tracking"
979
  msgstr ""
980
 
981
+ #: admin/includes/class-settings.php:346
982
  msgid "Are you missing something?"
983
  msgstr ""
984
 
985
+ #: admin/includes/class-settings.php:522
986
  msgctxt "label before ads"
987
  msgid "Advertisements"
988
  msgstr ""
989
 
990
+ #: admin/includes/class-shortcode-creator.php:162
991
  #: classes/widget.php:113
992
  #: modules/gutenberg/includes/class-gutenberg.php:77
993
  msgid "--empty--"
994
  msgstr ""
995
 
996
+ #: admin/includes/class-shortcode-creator.php:171
997
  #: admin/views/placement-form.php:81
998
  #: admin/views/placements-item.php:14
999
  #: classes/widget.php:122
2133
  msgstr ""
2134
 
2135
  #: admin/views/settings/general/block-bots.php:5
2136
+ #: classes/frontend_checks.php:123
2137
  msgid "You look like a bot"
2138
  msgstr ""
2139
 
2210
  msgid "The free version provides the post type display condition on the ad edit page."
2211
  msgstr ""
2212
 
 
 
 
 
2213
  #: admin/views/settings/general/editors-manage-ads.php:2
2214
  msgid "Allow editors to also manage and publish ads."
2215
  msgstr ""
2920
  msgid "Unable to locate needed folder (%s)."
2921
  msgstr ""
2922
 
2923
+ #: classes/frontend_checks.php:109
2924
  msgid "Random AdSense ads"
2925
  msgstr ""
2926
 
2927
+ #: classes/frontend_checks.php:137
2928
  msgid "Ad blocker enabled"
2929
  msgstr ""
2930
 
2931
+ #: classes/frontend_checks.php:149
2932
  msgid "<em>%s</em> filter does not exist"
2933
  msgstr ""
2934
 
2935
+ #: classes/frontend_checks.php:165
2936
  msgid "Ads are disabled in the content of this page"
2937
  msgstr ""
2938
 
2939
+ #: classes/frontend_checks.php:177
2940
  msgid "the current post ID is 0 "
2941
  msgstr ""
2942
 
2943
+ #: classes/frontend_checks.php:196
2944
  msgid "Ads are disabled on this page"
2945
  msgstr ""
2946
 
2947
+ #: classes/frontend_checks.php:210
2948
  msgid "Ads are disabled on all pages"
2949
  msgstr ""
2950
 
2951
+ #: classes/frontend_checks.php:225
2952
  msgid "Ads are disabled on 404 pages"
2953
  msgstr ""
2954
 
2955
+ #: classes/frontend_checks.php:239
2956
  msgid "Ads are disabled on non singular pages"
2957
  msgstr ""
2958
 
2959
+ #: classes/frontend_checks.php:253
2960
  msgid "Ad IDs: %s"
2961
  msgstr ""
2962
 
2963
+ #: classes/frontend_checks.php:281
2964
  msgid "IDs: %s"
2965
  msgstr ""
2966
 
2967
+ #: classes/frontend_checks.php:294
2968
  msgid "The following responsive AdSense ads are not showing up: %s"
2969
  msgstr ""
2970
 
2971
+ #: classes/frontend_checks.php:308
2972
  msgid "Consent not given"
2973
  msgstr ""
2974
 
2975
+ #: classes/frontend_checks.php:324
2976
  msgid "Enable TCF integration"
2977
  msgstr ""
2978
 
2979
+ #: classes/frontend_checks.php:337
2980
  msgid "Debug Google Ad Manager"
2981
  msgstr ""
2982
 
2983
+ #: classes/frontend_checks.php:348
2984
  msgid "Auto ads code found"
2985
  msgstr ""
2986
 
2987
+ #: classes/frontend_checks.php:360
2988
  msgid "highlight ads"
2989
  msgstr ""
2990
 
2991
+ #: classes/frontend_checks.php:467
2992
  msgid "Ad Health"
2993
  msgstr ""
2994
 
2995
+ #: classes/frontend_checks.php:481
2996
  msgid "Show %d more notifications"
2997
  msgstr ""
2998
 
2999
+ #: classes/frontend_checks.php:498
3000
  msgid "Everything is fine"
3001
  msgstr ""
3002
 
3003
+ #: classes/frontend_checks.php:566
3004
  msgid "the following code is used for automatic error detection and only visible to admins"
3005
  msgstr ""
3006
 
3007
+ #: classes/frontend_checks.php:884
3008
+ #: classes/frontend_checks.php:899
3009
  msgid "Hi %s"
3010
  msgstr ""
3011
 
3012
+ #: classes/frontend_checks.php:884
3013
  msgid "Advanced Ads detected AdSense Auto ads (%sx) on this page."
3014
  msgstr ""
3015
 
3016
+ #: classes/frontend_checks.php:884
3017
+ #: classes/frontend_checks.php:899
3018
  msgid "Is that correct?"
3019
  msgstr ""
3020
 
3021
+ #: classes/frontend_checks.php:886
3022
  msgid "All is fine"
3023
  msgstr ""
3024
 
3025
+ #: classes/frontend_checks.php:887
3026
  msgid "Something is off"
3027
  msgstr ""
3028
 
3029
+ #: classes/frontend_checks.php:889
3030
+ #: classes/frontend_checks.php:904
3031
  msgid "PS: This is a one-time check from your friendly Advanced Ads plugin. It is only visible to you."
3032
  msgstr ""
3033
 
3034
+ #: classes/frontend_checks.php:899
3035
  msgid "Advanced Ads detected the AdSense Auto ads code and <strong>no ads on this page</strong>."
3036
  msgstr ""
3037
 
3038
+ #: classes/frontend_checks.php:901
3039
  msgid "This is fine"
3040
  msgstr ""
3041
 
3042
+ #: classes/frontend_checks.php:902
3043
  msgid "I expected something else"
3044
  msgstr ""
3045
 
3046
+ #: classes/frontend_checks.php:907
3047
+ #: classes/frontend_checks.php:915
3048
  msgid "Just click on your problem to learn more from our knowledge base."
3049
  msgstr ""
3050
 
3051
+ #: classes/frontend_checks.php:908
3052
  msgid "I want to disable AdSense Auto ads"
3053
  msgstr ""
3054
 
3055
+ #: classes/frontend_checks.php:909
3056
+ #: classes/frontend_checks.php:916
3057
  msgid "I don’t see any Auto ads"
3058
  msgstr ""
3059
 
3060
+ #: classes/frontend_checks.php:910
3061
  msgid "I only see blank space"
3062
  msgstr ""
3063
 
3064
+ #: classes/frontend_checks.php:911
3065
  msgid "I want to change the position of the ads"
3066
  msgstr ""
3067
 
3068
+ #: classes/frontend_checks.php:912
3069
  #: modules/gadsense/includes/class-network-adsense.php:228
3070
  msgid "Display Auto ads only on specific pages"
3071
  msgstr ""
3072
 
3073
+ #: classes/frontend_checks.php:917
3074
  msgid "How to look for the Auto ads code"
3075
  msgstr ""
3076
 
3077
+ #: classes/frontend_checks.php:918
3078
  msgid "I have another question or problem"
3079
  msgstr ""
3080
 
3081
+ #: classes/frontend_checks.php:921
3082
  msgid "Closing the message"
3083
  msgstr ""
3084
 
3193
  msgstr ""
3194
 
3195
  #: modules/ad-blocker/admin/admin.php:150
3196
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:382
3197
  msgid "Unable to connect to the filesystem. Please confirm your credentials."
3198
  msgstr ""
3199
 
3280
  msgid "Want to know how many of your visitors are using an ad blocker? Enter your Google Analytics property ID above to count them."
3281
  msgstr ""
3282
 
3283
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:192
3284
  msgid "The ads.txt file cannot be placed because the URL contains a subdirectory. You need to make the file available at %s"
3285
  msgstr ""
3286
 
3287
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:204
3288
  msgid "The file is available on %s."
3289
  msgstr ""
3290
 
3291
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:208
3292
  msgid "The file was not created."
3293
  msgstr ""
3294
 
3295
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:215
3296
  msgid "Import & Replace"
3297
  msgstr ""
3298
 
3299
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:217
3300
  msgid "Move the content of the existing ads.txt file into Advanced Ads and remove it."
3301
  msgstr ""
3302
 
3303
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:224
3304
  #: modules/ads-txt/admin/views/setting-additional-content.php:29
3305
  msgid "An error occured: %s."
3306
  msgstr ""
3307
 
3308
  #. translators: %s the line that may need to be added manually
3309
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:238
3310
  msgid "If your site is located on a subdomain, you need to add the following line to the ads.txt file of the root domain: %s"
3311
  msgstr ""
3312
 
3313
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:355
3314
  msgid "The ads.txt is now managed with Advanced Ads."
3315
  msgstr ""
3316
 
3317
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:400
3318
  msgid "Not the main blog"
3319
  msgstr ""
3320
 
3321
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:429
3322
  msgid "Could not delete the existing ads.txt file"
3323
  msgstr ""
3324
 
3325
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:432
3326
  msgid "Could not find the existing ads.txt file"
3327
  msgstr ""
3328
 
modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php CHANGED
@@ -10,6 +10,13 @@ class Advanced_Ads_Ads_Txt_Admin {
10
 
11
  const ACTION = 'wp_ajax_advads-ads-txt';
12
 
 
 
 
 
 
 
 
13
  /**
14
  * Constructor
15
  *
@@ -162,28 +169,33 @@ class Advanced_Ads_Ads_Txt_Admin {
162
  /**
163
  * Get notices.
164
  *
165
- * @return string/bool Html markup on success or false if no cached data exists.
166
- * In the latter case, an ajax request will fetch the data.
167
  */
168
  public function get_notices() {
169
  $url = home_url( '/' );
170
  $parsed_url = wp_parse_url( $url );
 
 
171
  if ( ! isset( $parsed_url['scheme'] ) || ! isset ( $parsed_url['host'] ) ) {
172
- return;
173
  }
174
 
175
- $notices = array();
176
  $link = sprintf( '<a href="%1$s" target="_blank">%1$s</a>', esc_url( $url . 'ads.txt' ) );
177
  $button = ' <button type="button" class="advads-ads-txt-action button" style="vertical-align: middle;" id="%s">%s</button>';
178
 
 
 
 
 
179
  if ( Advanced_Ads_Ads_Txt_Utils::is_subdir() ) {
180
  $notices[] = array( 'advads-error-message', sprintf(
181
  esc_html__( 'The ads.txt file cannot be placed because the URL contains a subdirectory. You need to make the file available at %s', 'advanced-ads' ),
182
  sprintf( '<a href="%1$s" target="_blank">%1$s</a>', esc_url( $parsed_url['scheme'] . '://' . $parsed_url['host'] ) )
183
  ) );
184
- } elseif ( $this->strategy->is_enabled() ) {
185
  if ( null === ( $file = $this->get_notice( 'get_file_info', $url ) ) ) {
186
- return false;
 
187
  }
188
 
189
  if ( ! is_wp_error( $file )) {
@@ -216,7 +228,8 @@ class Advanced_Ads_Ads_Txt_Admin {
216
 
217
 
218
  if ( null === ( $need_file_on_root_domain = $this->get_notice( 'need_file_on_root_domain', $url ) ) ) {
219
- return false;
 
220
  }
221
 
222
  if ( $need_file_on_root_domain ) {
@@ -239,9 +252,11 @@ class Advanced_Ads_Ads_Txt_Admin {
239
  * @return string $r HTML markup.
240
  */
241
  private function get_notices_markup( $notices ) {
242
- if ( ! $notices ) {
243
- return;
 
244
  }
 
245
  $r = '<ul id="advads-ads-txt-notices">';
246
  foreach( $notices as $notice ) {
247
  $r .= sprintf( '<li class="%s">%s</li>', $notice[0], $notice[1] );
10
 
11
  const ACTION = 'wp_ajax_advads-ads-txt';
12
 
13
+ /**
14
+ * Whether the notices should be updated via AJAX because no cached data exists.
15
+ *
16
+ * @var bool
17
+ */
18
+ private $notices_are_stale = false;
19
+
20
  /**
21
  * Constructor
22
  *
169
  /**
170
  * Get notices.
171
  *
172
+ * @return array Array of notices.
 
173
  */
174
  public function get_notices() {
175
  $url = home_url( '/' );
176
  $parsed_url = wp_parse_url( $url );
177
+ $notices = array();
178
+
179
  if ( ! isset( $parsed_url['scheme'] ) || ! isset ( $parsed_url['host'] ) ) {
180
+ return $notices;
181
  }
182
 
 
183
  $link = sprintf( '<a href="%1$s" target="_blank">%1$s</a>', esc_url( $url . 'ads.txt' ) );
184
  $button = ' <button type="button" class="advads-ads-txt-action button" style="vertical-align: middle;" id="%s">%s</button>';
185
 
186
+ if ( ! $this->strategy->is_enabled() ) {
187
+ return $notices;
188
+ }
189
+
190
  if ( Advanced_Ads_Ads_Txt_Utils::is_subdir() ) {
191
  $notices[] = array( 'advads-error-message', sprintf(
192
  esc_html__( 'The ads.txt file cannot be placed because the URL contains a subdirectory. You need to make the file available at %s', 'advanced-ads' ),
193
  sprintf( '<a href="%1$s" target="_blank">%1$s</a>', esc_url( $parsed_url['scheme'] . '://' . $parsed_url['host'] ) )
194
  ) );
195
+ } else {
196
  if ( null === ( $file = $this->get_notice( 'get_file_info', $url ) ) ) {
197
+ $this->notices_are_stale = true;
198
+ return $notices;
199
  }
200
 
201
  if ( ! is_wp_error( $file )) {
228
 
229
 
230
  if ( null === ( $need_file_on_root_domain = $this->get_notice( 'need_file_on_root_domain', $url ) ) ) {
231
+ $this->notices_are_stale = true;
232
+ return $notices;
233
  }
234
 
235
  if ( $need_file_on_root_domain ) {
252
  * @return string $r HTML markup.
253
  */
254
  private function get_notices_markup( $notices ) {
255
+ if ( $this->notices_are_stale ) {
256
+ // Do not print `ul` to fetch notices via AJAX.
257
+ return '';
258
  }
259
+
260
  $r = '<ul id="advads-ads-txt-notices">';
261
  foreach( $notices as $notice ) {
262
  $r .= sprintf( '<li class="%s">%s</li>', $notice[0], $notice[1] );
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: ads, ad manager, ad rotation, adsense, banner
4
  Requires at least: 4.6
5
  Tested up to: 5.6
6
  Requires PHP: 5.6
7
- Stable tag: 1.22.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -317,6 +317,14 @@ Yes. You can use plenty of [hooks](https://wpadvancedads.com/codex/) to customiz
317
 
318
  == Changelog ==
319
 
 
 
 
 
 
 
 
 
320
  = 1.22.0 =
321
 
322
  - made dashboard layout compatible with WordPress 5.6
4
  Requires at least: 4.6
5
  Tested up to: 5.6
6
  Requires PHP: 5.6
7
+ Stable tag: 1.22.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
317
 
318
  == Changelog ==
319
 
320
+ = 1.22.1 =
321
+
322
+ - removed "Disable shortcode button" setting after it became obsolete in 1.22.0
323
+ - added the `advanced-ads-disable-shortcode-button` filter to disable the shortcode button
324
+ - removed ads.txt-related warnings when the option is disabled
325
+ - fixed issue with loading of shortcode button in editors that disabled custom buttons, e.g., Elementor
326
+ - fixed JavaScript warnings in Elementor editor
327
+
328
  = 1.22.0 =
329
 
330
  - made dashboard layout compatible with WordPress 5.6