release: v1.1.0

This commit is contained in:
noschmarrn 2026-03-20 19:35:45 +00:00
parent d29d99c724
commit af7302e9b4
6 changed files with 21 additions and 15 deletions

View file

@ -3,7 +3,7 @@
![PHP 8.0+](https://img.shields.io/badge/PHP-8.0%2B-blue) ![PHP 8.0+](https://img.shields.io/badge/PHP-8.0%2B-blue)
![WordPress 6.0+](https://img.shields.io/badge/WordPress-6.0%2B-21759b) ![WordPress 6.0+](https://img.shields.io/badge/WordPress-6.0%2B-21759b)
![License: GPL-2.0](https://img.shields.io/badge/License-GPL--2.0--or--later-green) ![License: GPL-2.0](https://img.shields.io/badge/License-GPL--2.0--or--later-green)
![Version](https://img.shields.io/badge/Version-1.0.0-orange) ![Version](https://img.shields.io/badge/Version-1.1.0-orange)
![Tests](https://img.shields.io/badge/Tests-112%20passing-brightgreen) ![Tests](https://img.shields.io/badge/Tests-112%20passing-brightgreen)
🇬🇧 [English version → README.md](README.md) 🇬🇧 [English version → README.md](README.md)

View file

@ -3,7 +3,7 @@
![PHP 8.0+](https://img.shields.io/badge/PHP-8.0%2B-blue) ![PHP 8.0+](https://img.shields.io/badge/PHP-8.0%2B-blue)
![WordPress 6.0+](https://img.shields.io/badge/WordPress-6.0%2B-21759b) ![WordPress 6.0+](https://img.shields.io/badge/WordPress-6.0%2B-21759b)
![License: GPL-2.0](https://img.shields.io/badge/License-GPL--2.0--or--later-green) ![License: GPL-2.0](https://img.shields.io/badge/License-GPL--2.0--or--later-green)
![Version](https://img.shields.io/badge/Version-1.0.0-orange) ![Version](https://img.shields.io/badge/Version-1.1.0-orange)
![Tests](https://img.shields.io/badge/Tests-112%20passing-brightgreen) ![Tests](https://img.shields.io/badge/Tests-112%20passing-brightgreen)
🇩🇪 [Deutsche Version → README.de.md](README.de.md) 🇩🇪 [Deutsche Version → README.de.md](README.de.md)

View file

@ -3,7 +3,7 @@
* Plugin Name: BreznGEO * Plugin Name: BreznGEO
* Plugin URI: https://brezngeo.com/ * Plugin URI: https://brezngeo.com/
* Description: AI-powered meta descriptions, GEO structured data, and llms.txt for WordPress. * Description: AI-powered meta descriptions, GEO structured data, and llms.txt for WordPress.
* Version: 1.0.0 * Version: 1.1.0
* Requires at least: 6.0 * Requires at least: 6.0
* Requires PHP: 8.0 * Requires PHP: 8.0
* Author: NoSchmarrn.dev * Author: NoSchmarrn.dev
@ -18,7 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) {
exit; exit;
} }
define( 'BREZNGEO_VERSION', '1.0.0' ); define( 'BREZNGEO_VERSION', '1.1.0' );
define( 'BREZNGEO_FILE', __FILE__ ); define( 'BREZNGEO_FILE', __FILE__ );
define( 'BREZNGEO_DIR', plugin_dir_path( __FILE__ ) ); define( 'BREZNGEO_DIR', plugin_dir_path( __FILE__ ) );
define( 'BREZNGEO_URL', plugin_dir_url( __FILE__ ) ); define( 'BREZNGEO_URL', plugin_dir_url( __FILE__ ) );

View file

@ -62,18 +62,15 @@ class SchemaMetaBox {
} }
// phpcs:ignore WordPress.Security.NonceVerification.Missing // phpcs:ignore WordPress.Security.NonceVerification.Missing
if ( ! isset( $_POST['_brezngeo_schema_nonce'] ) if ( ! isset( $_POST['_brezngeo_schema_nonce'] )
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized || ! wp_verify_nonce( sanitize_key( wp_unslash( $_POST['_brezngeo_schema_nonce'] ) ), 'brezngeo_schema_meta_box' ) ) {
|| ! wp_verify_nonce( sanitize_key( $_POST['_brezngeo_schema_nonce'] ), 'brezngeo_schema_meta_box' ) ) {
return; return;
} }
if ( ! current_user_can( 'edit_post', $post_id ) ) { if ( ! current_user_can( 'edit_post', $post_id ) ) {
return; return;
} }
// phpcs:ignore WordPress.Security.NonceVerification.Missing // phpcs:ignore WordPress.Security.NonceVerification.Missing
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$input = isset( $_POST['brezngeo_schema'] ) && is_array( $_POST['brezngeo_schema'] ) $input = isset( $_POST['brezngeo_schema'] ) && is_array( $_POST['brezngeo_schema'] )
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized ? map_deep( wp_unslash( $_POST['brezngeo_schema'] ), 'sanitize_textarea_field' )
? wp_unslash( $_POST['brezngeo_schema'] )
: array(); : array();
$clean = self::sanitizeData( $input ); $clean = self::sanitizeData( $input );
update_post_meta( $post_id, self::META_TYPE, $clean['schema_type'] ); update_post_meta( $post_id, self::META_TYPE, $clean['schema_type'] );

View file

@ -431,10 +431,10 @@ class LinkSuggest {
return; return;
} }
// phpcs:disable WordPress.Security.NonceVerification.Missing,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized // phpcs:ignore WordPress.Security.NonceVerification.Missing -- verified via check_ajax_referer() above
$post_id = (int) ( wp_unslash( $_POST['post_id'] ?? 0 ) ); $post_id = isset( $_POST['post_id'] ) ? absint( wp_unslash( $_POST['post_id'] ) ) : 0;
$content = wp_kses_post( wp_unslash( $_POST['post_content'] ?? '' ) ); // phpcs:ignore WordPress.Security.NonceVerification.Missing -- verified via check_ajax_referer() above
// phpcs:enable $content = isset( $_POST['post_content'] ) ? wp_kses_post( wp_unslash( $_POST['post_content'] ) ) : '';
if ( $post_id && ! current_user_can( 'edit_post', $post_id ) ) { if ( $post_id && ! current_user_can( 'edit_post', $post_id ) ) {
wp_send_json_error( 'Insufficient permissions' ); wp_send_json_error( 'Insufficient permissions' );

View file

@ -3,7 +3,7 @@ Contributors: mifupadev
Tags: seo, ai, meta description, schema, llms.txt Tags: seo, ai, meta description, schema, llms.txt
Requires at least: 6.0 Requires at least: 6.0
Tested up to: 6.9 Tested up to: 6.9
Stable tag: 1.0.0 Stable tag: 1.1.0
Requires PHP: 8.0 Requires PHP: 8.0
License: GPL-2.0-or-later License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html License URI: https://www.gnu.org/licenses/gpl-2.0.html
@ -208,7 +208,7 @@ No data is transmitted during normal page loads or to visitors.
* Data sent: Post title and content excerpt (meta descriptions, GEO Block); candidate post titles and URLs (link suggestions). * Data sent: Post title and content excerpt (meta descriptions, GEO Block); candidate post titles and URLs (link suggestions).
* API endpoint: `https://generativelanguage.googleapis.com/` * API endpoint: `https://generativelanguage.googleapis.com/`
* Privacy policy: https://policies.google.com/privacy * Privacy policy: https://policies.google.com/privacy
* Terms of use: https://ai.google.dev/gemini-api/terms * Terms of use: https://ai.google.dev/gemini-api/terms?hl=en
= xAI Grok = = xAI Grok =
* Data sent: Post title and content excerpt (meta descriptions, GEO Block); candidate post titles and URLs (link suggestions). * Data sent: Post title and content excerpt (meta descriptions, GEO Block); candidate post titles and URLs (link suggestions).
@ -218,6 +218,12 @@ No data is transmitted during normal page loads or to visitors.
== Changelog == == Changelog ==
= 1.1.0 =
* Fixed Google Gemini API terms URL that caused too many redirects during WordPress.org review.
* Improved input sanitization in Schema.org meta box — uses `map_deep()` with `sanitize_textarea_field` instead of relying on downstream sanitization with phpcs suppression.
* Improved input sanitization in Internal Link Suggestions AJAX handler — uses `absint()` and standard `isset()` pattern.
* Removed all `phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized` comments — all `$_POST` data is now sanitized inline at the point of access.
= 1.0.0 = = 1.0.0 =
* Initial release as BreznGEO. * Initial release as BreznGEO.
* AI Meta Generator with auto-publish trigger, customizable prompt, and Polylang/WPML language detection. * AI Meta Generator with auto-publish trigger, customizable prompt, and Polylang/WPML language detection.
@ -240,5 +246,8 @@ No data is transmitted during normal page loads or to visitors.
== Upgrade Notice == == Upgrade Notice ==
= 1.1.0 =
Fixes WordPress.org review issues: corrected Google Gemini terms URL and improved inline input sanitization.
= 1.0.0 = = 1.0.0 =
Initial release. Initial release.