=== DELUCKS SEO ===
Contributors: deLucks, Pantaloon, derfex
Donate link: http://delucks.com/en/wordpress-seo-plugin
License: GPLv3
License URI: http://www.gnu.org/licenses/gpl.html
Tags: SEO, Search Engine Optimization, Content analysis, Readability, Schema
Requires at least: 4.6
Tested up to: 7.0
Stable tag: 2.7.2
Requires PHP: 7.0

The only SEO plugin from Germany for holistic search engine optimization with ChatGPT and Google APIs.

== Description ==

### WordPress SEO Plugin made in Germany

Optimize your website for Google, Bing & Co in no time: Through the quick optimization mode of DELUCKS SEO you can improve your metadata, extend your content with structured data and relevant keywords not only while editing posts, pages etc., but also directly from the overviews of WordPress.

[youtube https://youtu.be/mMmIciAMTmo]

### Extensive functions of DELUCKS SEO

+ **Metadata** optimization for better previews
+ **Sitemaps** for easier indexing
+ Insert **statistics** and import SISTRIX rankings
+ Canonical **URLs** with SSL support
+ **Breadcrumbs** for better navigation and mobile SEO
+ Premium: Automatically invalidate outbound **links**
+ Premium: **Microdata** Configurator for rich snippets
+ Premium: **Social sharing** buttons, CCPA and GDPR compliant
+ Premium: WDF*IDF **text analysis**

#### Setup Wizard
After installation, our setup wizard will guide you through the most important SEO settings: Authorize your project for Google Search Console and Bing Webmaster Tools, activate additional features through the premium version and/or the professional mode if desired.

#### Import and export function
Import your keyword set with metadata easily via CSV file. If you previously worked with other WordPress SEO plugins like Yoast, wpSEO or All in One SEO Pack, you can import their metadata with a few clicks. Export your settings to other projects.

#### Suitable for all editors
Use our SEO plugin with all content editors: Elementor, WP Bakery Page Builder and many more. Our tool works best with the official **WordPress block editor**, for which there are dedicated SEO blocks and which provides the best loading times.

#### Multilingual optimization
Add locally relevant keywords to your translations and define individual language settings: For example, the composition of automatic metadata and breadcrumbs can be set differently in English than in French, Spanish or German. We recommend **WPML**.

#### WooCommerce & Taxonomies
Set individual rules for automatic metadata optimization and indexing of your products, categories and keywords. And if you don't want your tags or author profiles to be indexed in Google & Co., you can exclude them with one click.

> ★★★★★ Performant, cleanly developed, excellently designed and easy to use (David, FastWP)


### Perfect for PageSpeed optimization
DELUCKS SEO is PHP8 ready. Activate only those modules you need and combine our WordPress SEO plugin with **WP Rocket**:

+ **Meta data**: Optimize previews in search engines with keywords and create rules for composing meta titles. Get keyword suggestions via autosuggest for this purpose.
+ **Sitemaps**: Create automatically updated blueprints to help search engines index your site: Classic, Image, Video and News sitemaps.
+ **Statistics**: Integrate tracking codes of your web statistics, use automatic event tracking for Google Analytics or activate our SISTRIX API to display your rankings in WordPress.
+ **URLs**: Use Canonical tags and enforce SSL encryption for your website, automatically clean your new URLs from irrelevant stopwords to get found faster.
+ **Breadcrumbs**: Add navigation paths to your website via widget or shortcode to show users and search engines their position within your content and for mobile SEO.
+ **Links** (Premium): Automatically devalue outbound links and have them open in a new browser tab to keep SEO power within your site and lose fewer users.
+ **Microdata** (Premium): Use our Structured Data configurator to make videos, FAQs, recipes, events, jobs etc. visible in search results in the form of Rich Snippets.
+ **Ratings** (Premium): Add our ratings feature to WordPress' commenting function to stand out in Google search results with stars.
+ **Social sharing** (Premium): Configure CCPA and GDPR compliant plus performance-optimized sharing buttons to make your content easier to share on social media. Customize the previews in social media.
+ **Text optimization** (Premium): Get information on the number of headlines, text length and a checklist of terms to write your texts more relevant by comparing your competitors.

#### Questions, premium version or support needed? Get all information about our [WordPress SEO plugin](https://delucks.com/en/wordpress-seo-plugin/ "https://delucks.com/en/wordpress-seo-plugin/").


== Screenshots ==
1. Wordpress SEO Editor

== Installation ==
1. Upload unzipped folder to the `/wp-content/plugins/` directory
2. Activate the plugin through the 'Plugins' menu in WordPress
3. It is possible that you must manually reactivate the plugin after upgrading from free to professional version!

* we recommend PHP 5.4 or higher
* display_errors should always be disabled in live systems. Debug output can destroy our plugin functionality
* enable curl

== Changelog ==

= 2.7.2 =
* Updated plugin version from 2.7.1 to 2.7.2
* Added CSRF nonce protection for modal AJAX requests (`dpc_modal_show`, `dpc_modal_save`)
* Secured import/export functionality with nonces (`dpc_importexport`, `dpc_dashboard_wizard_restore`, `dpc_dashboard_import_metadata_csv`)
* Protected all admin AJAX endpoints with capability checks (`current_user_can('manage_options')`)
* Added nonce verification in settings restoration and CSV import
* File upload operations now check user permissions before processing
* Fixed early exit condition in `basic_breadcrumbs` module constructor
* Corrected archive prefix default (changed from empty to "Archive for")
* Fixed multiple `isset()` redundancy issues in breadcrumb output
* Adjusted indentation for code consistency
* Fixed timeout value: changed from 15000ms (15s) to 120s for OpenAI API requests
* Changed default AI model from `dpc_gpt_modal` to `dpc_metadata_ai`
* Fixed settings initialization to use correct keys for AI models
* Added proper fallback for missing AI model configuration
* Updated AI prompt placeholders from `getWebsiteLanguage` to `{{websiteLanguage}}` format
* Added early exit condition for disabled statistics module
* Fixed multiple `isset()` checks for safe property access
* Improved error handling for cURL timeouts with duplicate deduplication
* Added SSL verification (`sslverify => true`) to Google Search Console API calls
* Extended timeout for API requests to 15 seconds
* Added early exit condition for disabled sitemaps module
* Fixed multiple `isset()` checks for safe property access
* Corrected conditional logic for checking post type statuses
* Added early exit condition for disabled URLs module
* Updated settings.xml with GPT-5 model variants (gpt-5, gpt-5.1, gpt-5.2, gpt-5-pro, gpt-5-mini, etc.)
* Added separate AI model selectors for metadata and content editor
* Updated AI prompt defaults to include content placeholder
* Added robust OpenAI API error handling with friendly user-facing messages
* Implemented GPT-5 family endpoint support (`/v1/responses` for GPT-5, `/v1/chat/completions` for legacy)
* Added error mapping for cURL codes (28, 35, 51, 52, 60, 77, etc.)
* Improved API request with `max_completion_tokens` for o1 models
* Enhanced prompt template system with `{{}}` placeholder support
* Enhanced file upload validation with required field support
* Improved user feedback on upload success/failure
* Fixed JavaScript file reader to use `readAsText()` instead of `readAsDataURL()` for JSON/CSV files
* Added support for Elementor widget integration
* Added widget file validation and error handling
* Improved backward compatibility with existing breadcrumb configurations
* Added professional author module with co-authors support
* Implemented custom taxonomy for co-authors (`dpc_coauthors`)
* Added Gutenberg block for author box display (`dpc/author-box`)
* Multiple layout options: image-left, image-top, image-right
* Created admin meta box for co-author selection
* Support for webseide theme integration
* Social links display for authors
* Reorganized `__construct()` method to defer non-critical initialization to `hook_init`
* Moved hook registration to appropriate admin_init and init actions
* Improved separation of concerns between early and late initialization
* Removed `shouldLoadScripts()` static method calls from throughout codebase (was performing unnecessary script loading checks)
* Removed redundant file checks that were preventing legitimate functionality
* Updated file permissions on multiple `.js`, `.css`, `.php`, `.json`, `.xml` files to executable (755)
* Changed `.dpc` file format from base64-encoded to plain JSON for better compatibility
* Maintained backward compatibility with legacy base64-encoded files
* Updated import/export to handle both formats transparently

= 2.7.1 =
* Improved PHP 8.1–8.4 compatibility
* Fixed deprecated functions and dynamic property warnings
* Structured data output now suppressed if empty

= 2.7.0 =
* New Breadcrumb & Sharing buttons for Block Editor and Elementor
* Bugfix of language settings
* Added support for metadata translation in WPML
* Code cleanup and stability improved

= 2.6.0 =
* Ensure compatibility with HPOS for microdata product function
* Correct typo in `$companyLabel` causing frontend error
* Fix XSS in `dpc_analytics_opt_out` shortcode via `link_text` attribute
* Disable WooCommerce Product Schema based on settings
* Hide jobs post type in microdata module
* Move company fields from modal to global microdata settings
* Correct JSON-LD microdata validation issues
* Replace `{{getFocusKeyword}}` with `{{focusKeyword}}` in AI prompt templates
* Fix UTF-8 encoding in JSON-LD and prevent double-escaping in database saves
* Replace PHP 8.0+ match expression with array map for PHP 7 compatibility
* Handle `WP_Error` and empty terms in job location schema
* Add safe translation methods for `__()`, `_x()`, `esc_html__()`, and `esc_html_e()`
* Adjust `init` hook priorities for post type and taxonomy registration
* Fix PHP warnings when accessing category properties on null
* Fix warning for undefined array key in `validate_multi_checkbox`
* Fix job location data not displaying due to incorrect taxonomy name
* Fix PHP 8 array offset error in microdata module
* Rewrite `getJsonLdString()` function to improve schema generation
* Add missing 'Place of Work' taxonomy settings to job post editor
* Use post date as fallback when `hiring_date` is missing in schema
* Add itemValue support for JobPosting schema title mapping
* Revert to default date input to fix broken form submissions
* Fix unauthorized access vulnerability in the `dpc_dashboard_wizard_install_master` AJAX action.

= 2.5.9 =
* Ensure Elementor Hooks are Loaded Only in the Elementor Editor
* Resolve PHP 8.2 Deprecation in Basic > Metadata Module
* Fix JSON Schema Trailing Comma and Ensure Consistent Image Structure
* Replace Custom Query Variable with sitemap_index for /sitemap.xml

= 2.5.8 =
* Fixed: Syntax error on PHP versions below 8.0

= 2.5.7 =
* Fixed: Prevent empty JSON output in author schema: Added a check to ensure the output only occurs if populated; resolved issue where empty JSON string was being output when not found.
* Fixed: AJAX call execution and post-activation redirect in activatePlugin: Added options to trigger AJAX after plugin activation, introduced a delay for activation completion, conditional redirects after successful AJAX, and hooks for post-activation actions.
* Fixed: undefined $post variable issue in contentColumns: Replaced $post with $postID parameter to avoid PHP warnings.
* Fixed: Editable prompts in metadata and text optimization module: Ensured editable prompts appear in the correct settings, not modals.
* Fixed: security vulnerabilities in settings file handling: Improved checks for file readability and validation, enhanced error handling for broken settings data.
* Fixed: image duplication in schema: Removed unnecessary duplication in schema output.
* Fixed: location schema image fallback: Dynamically set fallback image for location schema if no post thumbnail exists.
* Fixed: logic for toggle elements in raster boundaries: Corrected issue with toggle elements appearing outside the raster.
* Fixed: PHP warnings related to undefined variables: Corrected warnings and added null checks for undefined or null variables.
* Fixed: RankMath import modal and metadata issues: Addressed issues with blank pages or incorrect metadata displays during RankMath import.
* Fixed: minor UI issues: Corrected font colors, modal sizing, and cleaned up visual inconsistencies.
* Apply border-radius styles conditionally for button elements: Fixed the application of border-radius styles based on specific sibling count.
* Added: Support metadata import from RankMath SEO plugin: Imported RankMath metadata for more flexible content management.
* Added: buildShareUrl function: Generate dynamic sharing URLs with UTM parameters for better tracking.
* Add support for partial CSV import (3.3): Allows importing specific fields like keywords, meta titles, and descriptions.
* Implemented a URL shortener in the Sharing module: Keeps UTM parameters intact while shortening URLs.
* Add run_once class: Ensures master settings are applied only on first activation to prevent redundant reapplication.
* Add default Microdata types: Set defaults for blog posts, pages, and job listings in settings.
* Add mandatory fields for "Local Business" review type: Included "Company Name" and "Address" fields in the review schema for local businesses
* Added sanitizeHtml function: Allowed inline scripts while blocking external /wp-admin/ scripts for better security.
* Under Basic > Sitemaps > Index Now: Instead of the plus sign, inserted this link to the API key generator: https://www.bing.com/indexnow/getstarted#implementation
* Under Basic > Statistics > SISTRIX API-Key: Added a link to the right of the field (https://app.sistrix.com/account/api).
* Added OpenAI link for users to generate the API key.
* Increased the width of the IndexNow container for the IndexNow API key generation link.
* Added instructions-links for the Google Search Console API.
* Enhanced the text layout issues of the GSC API generation links.
* Updated tweet endpoint to new X post endpoint: Updated URL endpoint from Twitter to X platform.
* Replaced "Twitter" references with "X": Changed all icons and verbiage to reflect the new "X" platform.
* Refactored filterRobots function: Simplified and improved the handling of sitemap URLs for robots.txt generation.
* Updated DPC file handling and encoding: Fixed encoding issues and enhanced security with no_priv_ajax permissions.
* Updated deactivation modal: Aligned modal design with Elementor templates, added survey, and improved button functionality.
* Removed console logs in xing.js file: Cleaned up debugging logs in the sharing script.
* Changed file name from twitter.js to x.js: Fixed the missing X share endpoint by renaming the file.
* Removed exclamation mark from Elementor DELUCKS tab: Minor UI cleanup for consistency.
* Improve CSV import handling: Enhanced metadata import handling for slug conflicts, metadata assignment, and improved error handling.
* Enhanced the CSV-based metadata import functionality: Added robust error handling, success/failure responses, and better flexibility for custom field mapping.
* Improved AJAX URL handling: Added AJAX URL to scripts to facilitate smoother execution of AJAX requests.
* Improved user experience with immediate setting updates: Added a redirect to immediately reflect settings changes after saving, avoiding manual refresh.
* Reverted editable text areas with prompts in expert settings: Removed prompts that were inserted in the wrong place as per commit 35fe7da.
* Fixed W3C validation errors for sharing buttons: Corrected invalid href attribute usage in sharing buttons for proper HTML validation.
* Improved handling of post-activation actions: Added admin hooks and improved the logic for actions triggered after plugin activation.
* Fixed issues with element positioning: Ensured elements stay within correct boundaries and prevent display glitches.

= 2.5.6 =
* Chat GPT API for for metadata and text optimization with AI
* Google Search Console API for rank tracking
* New support for Elementor editor
* Free > Statistics: Added a new option to keep UTM params and append them to internal links
* UX Improvements
* Deprecated code cleaned up for PHP 8.2+
* X instead of Twitter icon for social sharing
* Sharing > Bugfixes

= 2.5.5 =
* Remember utm parameters and add them to links
* Security fixes
* Many code adjustments and minor bugfixes

= 2.5.4 =
* Security fix

= 2.5.3 =
* Fixed a white space bug which prevents wordpress to redirect to the wp-admin login mask. (open yourdomain.com/wp-login.php to access)

= 2.5.2 =
* Set wordpress 6.0 as compatible
* Fixed broken output with special chars in breadcrumbs


= 2.5.1 =
* Fixed a syntax issue within microdata > location output
* Compatibility with Postman SMTP
* WDF*IDF: Heading and word counters now with average values
* Updated character limits for meta titles and descriptions
* Meta description can be stored as an excerpt via checkbox
* Meta robots extended by "max-video-preview:-1", "max-snippet:-1" and "max-image-preview:large"
* Many minor bugfixes

= 2.5.0 =
* PHP 8 compatibility  
* CSV import
* Survey on uninstallation
* Moved breadcrumb module from Premium to Free
* Text optimization now with headline and text length comparison
* Many minor bugfixes

= 2.4.6 =
* Meta description strip shortcode bugfix 
* Changed meta description fallback
* Sharing > Pinterest bugfix

= 2.4.5 =
* Bugfix migration wizard
* Stricter meta title limits
* Added shortcode filter for automatic meta descriptions
* WordPress standard sitemap disabled when our (more extensive) sitemap is enabled
* Added custom XML extension for sitemaps (e.g. to embed podcasts)
* Optimization of rating microdata

= 2.4.4 =
* Fixed a wizard bug
* Added a SEO Popup button in Gutenberg fullscreen mode

= 2.4.3 =
* Added lost stylesheet

= 2.4.2 =
* Visual optimization of microdata editing
* Bugfixes for setup wizard

== Changelog ==
= 2.4.1 =
* Removing language files to use GlotPress

== Changelog ==
= 2.4.1 =
* Removing language files to use GlotPress

= 2.4.0 =
* Post categories output in sitemaps changed to posttype post only

= 2.3.9 =
* Post categories have been added to the xml post-sitemap

= 2.3.8 =
* Added a new option to display sharing buttons on certain post types
* Minor bugfixes

= 2.3.7 =
* Keyword auto suggest now uses the current post language
* Experimental Polylang and Polylang Pro support (please share your experiences with us)

= 2.3.6 =
* Code improvements
* Minor bugfixes

= 2.3.4 =
* Code improvements
* Added some removable actions for metadata and social sharing tag output

= 2.3.3 =
* Code improvements

= 2.3.1 =
* Modal: Design cleanup
* Microdata: Structural optimization plus new Schema.org information for FAQ
* Dashboard: Now with Installation wizard
* Settings: Design cleanup
* Premium / Sharing: frontend design cleanup

= 2.2.0 =
* Minor bug fixes

= 2.1.9 =
* Many code improvements that contribute to the security of your system
* 3rd party components have been updated
* Unused codes have been removed
* Preparations for the next big update
* The wordpress team asked us to leave the error reporting untouched. If any warnings or errors are reported after the update, disable the debug output within your server settings or in the wp-config.php or look at the components that generate these messages.

= 2.1.8 =
* Important update: A security issue has been fixed. Please update as soon as possible

= 2.1.7 =
* Small bugfix in the rating module

= 2.1.6 =
* Professional > Rating: New option to configure the behavior of the gutenberg comment block toggle
* Minor bugfixes

= 2.1.5 =
* Fix: a conditional logic error have been removed

= 2.1.4 =
* Added code to the breadcrumbs module to handle woocommerce shop page as a regular page
* Fixed a bug which prevents replying to a comment from the backend with active data privacy checkbox option in the rating module
* Fixed a bug in the rating module gutenberg block for displaying comments inline
* Fixed a bug in the Sharing > More Button when using in a widget

= 2.1.3 =
* Fixed a syntax issue in microdata output

= 2.1.2 =
* Google tag manager local hosting have been removed for compatibility reasons

= 2.1.1 =
* Performance optimization

= 2.1 =
* Message for disabled expert settings have been removed
* Several small fixes

== Upgrade Notice ==

= IMPORTANT: As owner of the Premium version you need to reactivate this plugin after the upgrade =

= Translation =

* English (en_EN)
* German (de_DE)
* Spanish (es_ES)
* French (fr_FR)
