=== Remove layout destroying HTML-Tags ===

Contributors: spicone
Donate link: https://paypal.me/scp41061
Tags: copy-paste, html, cleanup, editor, page-builder
Requires at least: 6.7
Tested up to: 7.1
Stable tag: 0.6.0
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Copy&Paste Cleaner. Cleanup the code in post and page editor after using copy&paste content from different sources and automatic saving.

== Description ==

**Copy&Paste Cleaner**. If you want to quickly fill a post or a page with content that already exists, **copy&paste** is often used and it can destroy the layout of a website!

The basic problem is that if you copy&paste content from different sources into the visual editor, any formatting is copied over. Specifically, whether from **text documents**, other **websites**, **online-shops** and **cms** or even from **social media**, something comes along everywhere.

As there are often **DIVs** in addition to harmless HTML elements, these can cause the rendering of your own website to be faulty or interrupted.

To avoid this, this plugin checks the existing formatting and attributes and removes all those that could lead to a problem and then saves it directly.

**If you copy and paste into the text editor, there is usually no problem.**

Tested with these page builders:

* Classic editor
* Gutenberg
* Divi 4.27
* Elementor 4.2
* WPBakery 9.0
* Beaver Builder 2.10

**Privacy GDPR**

This plugin processes the analyzed and converted HTML only within the respective website. No content is stored or transferred to other servers or services for processing. Data protection in accordance with the GDPR is therefore guaranteed at all times.

== Installation ==

= Installation from within WordPress =

1. Visit **Plugins > Add New**.
2. Search for **Remove layout destroying HTML-Tags**.
3. Install and activate the Remove layout destroying HTML-Tags plugin.

= Manual installation =

1. Upload the entire `remove-layout-destroying-html-tags` folder to the `/wp-content/plugins/` directory.
2. Visit **Plugins**.
3. Activate the Remove layout destroying HTML-Tags plugin.

== Frequently Asked Questions ==

= Why are some img elements being removed? =

External images — those whose src attribute points to a foreign domain — are removed for copyright, performance and security reasons. Images that are hosted on your own domain (relative paths or same-domain absolute URLs) are kept. You should always insert image data properly and equip it with the appropriate attributes, which is better for accessibility and SEO.

= Is it working with Beaver, Gutenberg, Divi, Elementor or WPBakery? =

At the moment it works fine with Classic Editor, Gutenberg, Divi 4, Elementor, WPBakery and Beaver Builder. Integration for Divi 5 is in process.

= Why are the alt, aria-* and title attributes removed? =

These attributes are important for accessibility, but should be added and adapted individually so that the context is maintained.

= Why are emojis being removed too? =

Although emojis are based on the international Unicode, they are sometimes displayed differently. This means that an emoji can look completely different on iOS, Android and Windows and have a corresponding effect. These are filtered out to avoid misunderstandings in terms of content and to avoid potential display errors.

= How does it work in Gutenberg? =

There are two ways to use it in Gutenberg: you can clean up the entire post or page or just the content of a block. To clean up a block, simply use the icon in the toolbar. If you want to clean up the entire content at once, go to the sidebar and use the Clean up HTML button in the HTML Cleanup section.

= How does it work in Beaver Builder? =

In Beaver Builder the cleanup button appears directly above the text editor toolbar inside each text module. Simply click the button to clean up the HTML content of that module. A spinner indicates that the process is running, and the button briefly turns green once the cleanup is complete.

== Screenshots ==

1. Button in Classic Editor
2. Button in TinyMCE toolbar
3. Button in Divi
4. Button in Elementor
5. Button in Gutenberg toolbar
6. Button in Gutenberg sidebar
7. Button in WPBakery
8. Button in Beaver Builder

== Changelog ==

Note: Starting with the next release (after 0.6.0), this changelog follows the Keep a Changelog standard (https://keepachangelog.com/de/1.1.0/) with categories Added, Changed, Deprecated, Removed, Fixed, Security. A CHANGELOG.md is included in the plugin package.

= 0.6.0 - 2026-09-01 =
* New: Hashtag links (link text starting with #) are now removed
* New: iframe elements are now removed completely including their content
* New: blockquote elements are now removed (content is preserved)
* New: pre elements are now removed (content is preserved)
* New: aside elements are now removed (content is preserved)
* New: Visual warning when div elements are detected after pasting – Classic Editor and Beaver Builder highlight the cleanup button, Divi and WPBakery show a TinyMCE notification, Gutenberg shows a notice in the sidebar panel, Elementor highlights the cleanup button
* Fix: Output escaping improved in Elementor integration
* Fix: Unnecessary context check removed from Elementor integration
* Fix: Script versioning fixed in Beaver Builder integration
* Fix: TinyMCE plugin registration restricted to post editor pages to prevent initialization errors in other admin areas
* Tweak: img handling improved – only foreign-domain images are removed; local images (relative or same-domain src) are kept
* Tweak: FAQ updated – img element handling explained
* Tweak: Gutenberg editor strings are now fully translatable via WordPress translation system

= 0.5.2 - 2026-08-10 =
* Fix: Missing capability check in AJAX handler (any logged-in user could call the endpoint)
* Fix: ABSPATH guard missing in WPBakery include file
* Fix: Unsanitized $_GET['action'] in Elementor integration
* Fix: Gutenberg sidebar cleanup now sends parallel requests instead of sequential (performance)
* Fix: RichText toolbar button now sends actual HTML instead of plain text
* Fix: Performance improved in Beaver Builder integration
* Tweak: Gutenberg sidebar panel updated to use current WordPress API

= 0.5.1 - 2026-08-10 =
* Tweak: FAQ updated – Beaver Builder usage explained

= 0.5.0 - 2026-08-10 =
* New: Beaver Builder support
* Tweak: Divi 4 moved to dedicated integration file
* Tweak: WPBakery 9.0 tested
* Tweak: Elementor 4.2 tested
* Tweak: Beaver 2.10 tested
* Tweak: Updating compatibility information

= 0.4.3 - 2026-05-21 =
* Fix: PHP 7.4 compatibility restored – replaced str_starts_with() with strpos()
* Fix: Deprecated mb_convert_encoding() replaced with mb_encode_numericentity()
* Fix: Added ABSPATH security check to main plugin file
* Tweak: Script versioning improved to prevent stale browser cache
* Tweak: Tested with WordPress 7.0 and 7.1

= 0.4.2 - 2025-12-03 =
* Tweak: WPBakery 8.7 tested
* Tweak: Elementor 3.33 tested
* Tweak: Tested with WordPress 6.9
* Tweak: Updating compatibility information

= 0.4.1 - 2025-09-16 =
* Tweak: Updating compatibility information

= 0.4.0 - 2025-05-02 =
* New: Elementor support
* Tweak: FAQ Info on Gutenberg usage

= 0.3.1 - 2025-04-30 =
* Fix: Version reference

= 0.3.0 - 2025-04-30 =
* New: Gutenberg support

= 0.2.4.1 - 2025-04-16 =
* Tweak: Tested with WordPress 6.8
* Fix: Some filters execute without explicit action on preview and save post

= 0.2.4 - 2025-04-11 =
* New: Removing emojis
* Tweak: Further Javascript optimizations
* Tweak: FAQ Info on emojis
* Tweak: Tested with WordPress 6.8-RC3
* Tweak: Javascript error is now translatable
* Tweak: Donate link updated

= 0.2.3.1 - 2025-04-01 =
* Tweak: Javascript file renamed
* Tweak: Added update date in changelog
* Tweak: GDPR privacy info added in description

= 0.2.3 - 2025-03-28 =
* New: UX - Finally tooltip in TinyMCE toolbar is now translatable
* New: UI - Finally the plugin logo in TinyMCE toolbar integrated
* Tweak: PHP for page builder swap to own folder
* Tweak: Updated screenshots
* Removed: Gutenberg integration needs more testing
* Tweak: Tested with Divi 4.27.4 & WPBakery 8.3.1

= 0.2.2.1 - 2025-03-27 =
* Fix: Content of some elements also deleted

= 0.2.2 - 2025-03-27 =
* New: align, height, bgcolor, border, cellspacing attributes will be removed
* New: Table elements added (table, tr, td, th)
* New: b, i element added to approved elements
* New: abbr element will be removed
* Fix: Some aria-* und data-* attributes wasn't removed

= 0.2.1 - 2025-03-25 =
* New: data- attributes will be removed
* New: article, figure, picture elements will be removed
* New: aria-setsize, aria-posinset, translate, dir attributes will be removed
* Tweak: Javascript swap to own folder
* Tweak: Installation guide added

= 0.2.0 - 2025-03-20 =
* New: WPBakery 8.3 support

= 0.1.1 - 2025-03-19 =
* Tweak: Tested with Gutenberg & Divi 4 page builder
* Tweak: Linguistic adjustments

= 0.1.0 - 2025-03-19 =
* New: Copy&Paste Cleaner finally in TinyMCE toolbar integrated

= 0.0.20 - 2025-03-18 =
* New: Icon & Banner

= 0.0.19 - 2025-03-14 =
* New: Exceptions added: blockquote

= 0.0.18 - 2025-03-12 =
* New: aria-hidden, title attributes will be removed
* Tweak: some linguistic adaptation for correct translations

= 0.0.17 - 2025-03-12 =
* Tweak: Button is now translatable

= 0.0.16 - 2025-03-11 =
* New: Icon and banner for the WordPress Plugin Directory
* Tweak: after access in the WordPress Plugin Directory, small corrections of the information
* New: Plugin is now regularly available via WordPress

== Upgrade Notice ==

= 0.6.0 =
Security update recommended. This release fixes output escaping and input validation issues in the Elementor and Classic Editor integrations. Also includes several improvements and new features. Users on 0.4.x or earlier should update immediately.

= General =

This plugin is under active development and new functions and improvements are released with every update.
