== Changelog ==

= 1.30.0 =

- Improvement: add `advanced-ads-group-taxonomy-params` filter to change ad group taxonomy parameters
- Improvement: add "Manual Placements" to the Advanced Ads block and sidebar widget
- Improvement: update Black Friday promotion
- Fix: enable `Ad Admin` and `Ad Manager` to assign ads to groups from ad edit page and quick edit view
- Fix: disable unavailable ad types on the ad edit page
- Fix: improve AdSense auto ads code warning on ad edit page
- Fix: handle AdSense report API response for accounts without earnings
- Fix: remove `amp-auto-ads` element on non-AMP URLs
- Fix: honor disabling ads settings for AMP pages
- Fix: escape placement selectors for jQuery to allow adding conditions to multibyte placement names
- Fix: ensure correct text domain for translations
- Fix: make the ad list sortable in descending order
- Fix: remove hard-coded `orderby` and `order` for posts list
- Fix: prevent updating ad weights of non-published ads
- Fix: correct Display Conditions meta box video player
- Fix: remove escaped HTML tags in new placement form
- Fix: resolve a conflict with WPML where conditions were not displayed correctly on the placement page
- Fix: move placement of the ad blocker disguise settings

= 1.29.1 =

- Fix: ensure `Advanced_Ads_Adsense_Report_Helper` JavaScript global is defined
- Fix: hide AdSense setting submit button if there is no publisher ID
- Fix: show error message when no AdSense account data found

= 1.29.0 =

- Improvement: update AdSense API to V2
- Improvement: unify layout of backend notices
- Improvement: move some descriptions into tooltips
- Improvement: move ad blocker fix options to the related setting
- Fix: correct uppercase CSS rule for labels in backend
- Fix: remove usage link for every type except manual placement
- Fix: correct sorting of placements by type on placement list page
- Fix: bad language in Analytics Adblock Counter option

= 1.28.0 =

- Improvement: add an `inline` attribute to the `the_ad` shortcode that allows the user to change the wrapper from `div` to `span`
- Improvement: update plugin updater class
- Improvement: rename "Item" option into "Ad / Group" to clarify its purpose
- Improvement: show a link to create a new ad on the placement page
- Improvement: show content placements first when creating a new one
- Improvement: remove welcome panel on ad edit screen
- Improvement: rename last button in the wizard to "Save" to highlight that this is the last step
- Fix: wrap `advanced_ads_ready_queue` in an IIEF to prevent naming collisions

= 1.27.0 =

- Improvement: prevent issues with functionality from other plugins that delay JavaScript execution (WP Rocket, Complianz, et al.).
- Improvement: unify the layout of the Next buttons in the ad Wizard
- Improvement: add the updated AdSense code. Added a filter to continue using the old AdSense code. [Learn more](https://wpadvancedads.com/adsense-crossorigin-attribute-performance)
- Improvement: update Ad Block Counter to work with Google Analytics 4 properties
- Fix: ensure Ad Admin can save AdSense, Privacy, and License settings
- Fix: prevent error when "Remove data on uninstall" option is set due to uninitialised constants
- Fix: ad edit button for ads delivered using groups
- Fix: improve compatibility with PHP 8 by removing default values from required function parameters

= 1.26.0 =

- overwrite existing options when importing new options
- add possibility to export privacy, ads.txt and Google AdSense options
- remove duplicate inline styles for placements with passive cache-busting and activated TCF 2.0 privacy option
- adjust the Advanced Ads block layout to the default WordPress block layout
- add migration from Advanced Ads widget to Advanced Ads block
- fix saving of additional CSS class in Advanced Ads block
- make placement deletion confirmation dialogue translatable
- add WebP as allowed image media type for exports

= 1.25.1 =

- fixed a bug that prevented removing placement conditions
- trim `inline-css` to remove duplicate spaces
- check if `inline-css` index exists in ad options to prevent undefined index notice
- move `Advanced_Ads_Inline_Css` class from singleton to one instance per ad, to fix issues with `inline-css` not being added
- fixed ad edit button visibility in frontend when ad label was activated

= 1.25.0 =

- show ad label event when ad wrapper is now shown
- add filter `advanced-ads-ajax-ad-select-arguments` to modify arguments of AJAX ad selection
- display ads on BuddyPress pages when no ads allowed on 404 pages
- Ad blocker fix: do not copy assets from "vendor" and "lib" folders
- Ad blocker fix: compare assets based on `filemtime` instead of `filesize`
- bump minimal require WP core version to 4.9
- allow to add a replacement for AdSense page-level code

= 1.24.2 =

- fix authenticated (i.e. logged-in) DOM-based XSS vulnerability while creating jQuery object from user input in Safari and IE

= 1.24.1 =

- fix compatibilty with WP prior to 5.0

= 1.24.0 =

- AdSense deprecated Link Units and might no longer fill them. So we removed them when creating new ads. [Learn more](https://wpadvancedads.com/adsense-link-units/)
- enable AdSense Auto ads on AMP pages
- interpret WP blocks in the plain text ad type
- remove MailPoet warning since they are not retiring custom shortcodes after all
- convert jQuery shorthand functions to `.on()` and `.trigger()`
- made shortcode button work with WordPress 4.9
- allow to exclude conditions from the "new display condition" dropdown
- prevent AdSense earnings box from appearing on non AdSense ad page when AdSense connection is lost

= 1.23.2 =

- reverted erroneously removing plugin author index

= 1.23.1 =

- removed warning about iThemes Security since it is no longer causing the reported issue
- added correct icon to Advanced Ads block
- fixed escaping for AdSense Auto ads codes that use the deprecated "Disable Top Level" option
- fixed TinyMCE warning in dev console
- replaced `intval()` and `floatval()` with type-casting

= 1.23.0 =

- MailPoet is going to deprecate custom shortcodes. See [this section](https://wpadvancedads.com/mailpoet-newsletters/#Enable_MailPoet_support_in_Advanced_Ads) in case you are using Advanced Ads ads in your newsletters
- updated Google AdSense API to use web application verification
- prevent accidental public ad URLs. See [Making the Ads post type public](https://wpadvancedads.com/manual/making-the-ad-post-type-public/) if you want to query ads via a dedicated URL
- allow to reserve only width or height for plain, rich content and group ad types

= 1.22.2 =

- fix shortcode button within Classic editor and Classic editor block

= 1.22.1 =

- 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

= 1.22.0 =

- made dashboard layout compatible with WordPress 5.6
- removed irrelevant AdSense warnings
- allow filtering of data-attributes for encoded ads if privacy module is enabled
- added `advanced-ads-ad-edit-show-placement-injection` filter to allow removing the placement-injection box on the ad edit screen
- added `advanced-ads-unhide-meta-boxes` filter to allow adding of meta box ids that should always be visible on ad edit pages
- added `advanced-ads-ad-option-{$field}` filter for ad options
- added action hooks for ad status changes: `advanced-ads-ad-status-published`, `advanced-ads-ad-status-unpublished`, `advanced-ads-ad-status-{$old_status}-to-{$new_status}`
- removed public URLs for single ads on some installations
- fixed old icon in the menu
- fixed Internet Explorer 11 incompatibility
- fixed possible error in TinyMCE editor caused by ad blockers

= 1.21.1 =

- fixed pagination on the ad list page
- fix Google AdSense non-personalized ads

= 1.21.0 =

- enable Position options for Sidebar placements
- increased default weight for ads imported to a group from 1 to 5 which is mostly relevant when selling ads to existing placements
- Ad Health: added body classes that explain plugin behavior at given moment
- ads.txt: prevented converting special characters into HTML entities
- show ad overview list even if all ads were moved to trash
- fixed error when specific ACF function does not exist
- fixed option to disable ads also on the "Posts page" as set in the WordPress Reading settings

= 1.20.3 =

- whitelist field groups created by Advanced Custom Fields on the ad edit page
- prevent including AdSense Auto ads code when the Borlabs Cookie is already adding it
- prevented adding unneeded escape characters to ads.txt file
- added compatibility with Funding Choices when consent is not needed

= 1.20.2 =

- fixed displaying image ads if privacy method is set to custom cookie
- fixed scroll to last edited placement with non-English letters
- fixed minor UI issues

= 1.20.1 =

- don't escape top anchor ads code as a whole, user input has already been escaped

= 1.20.0 =

- integrate with TCF 2.0 compatible consent management platforms, e.g., Quantcast Choices
- improve timezone methods `Advanced_Ads_Utils::get_wp_timezone()` and `Advanced_Ads_Utils::get_timezone_name()`
- Divi theme: made content injection work with the "Unlimited ad injection" setting disabled
- added missing spaces to image ad tags to fix Cache-Busting issue
- made ad centering work when right and left margin are set
- add ad health check if __tcfapi responds but the privacy module is either not enabled or not set to TCF 2.0
- remove duplicate lines from the ads.txt file
- fixed layout issues that happens due to the JNews theme

= 1.19.1 =

- apply WordPress lazy loading for images to images in ad content
- layout fixes for WordPress 5.5

= 1.19.0 =

- placements are now ordered by type on the Placements page. You can still choose ordering by name
- the "custom" option of the Content placement now comes with a picker to select the position in the frontend
- WPML: placements pages show ads according to the selected language
- WPML: display the ad in the original language if a translated ad is missing unless the publisher chooses to hide it instead
- prevented injection of ads into captions of "image" blocks
- improved bot check
- fixed layout of expiry data fields
- fixed broken check for the Responsive add-on

= 1.18.0 =

* inject ads automatically based on div, table, quotes, iframe, and other HTML tags
* define your own injection rules using the new "custom" option for the Content placement
* hide Shortcode button in TinyMCE editor by default for new users
* added `advanced-ads-options` filter for main plugin options
* prevent automatic ad injection into paragraphs within blockquotes
* hide placement options after publishing an ad translated with WPML
* disallowed ad insertion into the header of the WP File Manager's admin page

= 1.17.12 =

* set default name for ads where none was given
* fixed issue where long option markup could break the group page
* made placements of type other than "Header Code" work with "Thrive Theme Builder" theme

= 1.17.11 =

* added Datanyze and Ecosia to bots list
* linked to [Google Ad Manager Integration](https://wpadvancedads.com/add-ons/google-ad-manager/)
* fixed Layout Key field for AdSense ads not saving new values
* fixed error that broke the wizard when the URL field of image ads contained a wrong value
* fixed links to manuals
* fixed unneeded notification shown when ads are disabled on 404 pages

= 1.17.10 =

* fixed escaped HTML tag in Ad Planning column
* fixed possible JavaScript error caused by Ad Health checks
* fixed possible third-party conflict causing the ad group filter to throw an exception
* removed unneeded notification shown when ads are disabled on 404 pages

= 1.17.9 =

* fixed warning about missing `the_content` filter in WordPress 5.4
* fixed public warning if the WordPres `widget` function is called with wrong parameters
* fixed wrong usage of get_current_user

= 1.17.8 =

* WPML: placements now deliver also ads translated with WPML when only one of the language versions was assigned to them
* fixed delete option in placement form

= 1.17.7 =

* fixed index value of content placements not showing up in the form while saved and working correctly
* recovered compatibility with the "Render Blocking JS" option of the WP Fastest Cache plugin

= 1.17.6 =

* improved coding style in backend templates
* prepared for option to allow minimum number of words between ads in Advanced Ads Pro
* hide notice that warns if the "Disable ads in REST API" option was selected
* Renad theme: fixed a bug that caused menu item to point to incorrect url instead of theme options

= 1.17.5 =

* fixed ads being injected multiple times when using the Newspaper theme or multiple the_content filters

= 1.17.4 =

* added option and Display Condition to disable ads in content served through the REST API
* made error notices less obstrusive
* code style optimizations
* fixed ad groups form on ad edit page
* fixed potential conflict with autoloader

= 1.17.3 =

* prevented content injection into specific elements where ads cause issues
* assign `advads-stop-injection` class to any element into which you don’t want to automatically inject ads
* fixed possible cURL error when checking existing ads.txt file locally

= 1.17.2 =

* replaced autoloader
* fixed an issue where an expired ad removed HTML in the ad code

= 1.17.1 =

* fixed failing upload of new image ads
* fixed Google Ad Manager debug link also showing up when other Google Publisher Tags are used

= 1.17 =

* improved AdSense ad unit list coming from the AdSense API
* improved "highlight ads" option in Ad Health
* show notice if AJAX calls are broken
* added `com.pl` as exception for placing ads.txt files in subdomains
* removed placeholder for AdSense ads in the Customizer and Elementor editor
* fix for WP Smush lazy load preventing image ads from showing at all

= 1.16.1 =

* fixed JavaScript that broke privacy module check in the frontend
* allow to change size of AdSense ads loaded from the AdSense account

= 1.16 =

* moved all users to the new content injection logic and removed opt-out option
* use new Auto ads code for everyone who didn’t enable the "Disable top anchor ads" option
* hide "Disable top anchor ads" option to users who didn’t enable it
* the Ad Admin user role can now also save the plugin settings
* hide Wizard for existing ads
* removed warning about WP Autoterms plugin after a fix by the plugin authors
* some work for Conditions to improve compatibility with an upcoming Pro feature
* fixed multiple wrappers occurred as result of using nested ads
* fixed missing index issue on 404 pages for logged-in admins
* fixed AJAX/PHP error 403 on Settings page
* fixed layout issue that happened when "If>So Dynamic Content" plugin was active
* prevented Ad label from taking height of fixed sized AdSense ads
