From bbea5dd36769341d7397651465af8171094a4a1e Mon Sep 17 00:00:00 2001
From: Andrew Cockrell <1480054+acockrell@users.noreply.github.com>
Date: Sun, 22 Mar 2026 19:41:30 -0700
Subject: [PATCH 1/2] Fix WordPress.org submission issues
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- readme.txt: fix Tested up to (6.9.4 → 6.9), remove screenshots
section, add third-party service disclosure for Google CSE with ToS
and Privacy Policy links, add source repo link
- frontend: restrict Google CSE script, stylesheet, and init script to
the configured results page only (was loading sitewide)
- admin: fix printf() HTML substitution to use wp_kses() explicitly
- languages: regenerate gpse.pot (fixes stale author 'Gemini' → ACLabs,
removes orphaned search-form block strings)
---
gpse/includes/class-wp-gpse-admin.php | 11 +++++++----
gpse/includes/class-wp-gpse-frontend.php | 15 +++++++++++++++
gpse/readme.txt | 15 +++++++++++----
3 files changed, 33 insertions(+), 8 deletions(-)
diff --git a/gpse/includes/class-wp-gpse-admin.php b/gpse/includes/class-wp-gpse-admin.php
index bd6976e..a20e8eb 100644
--- a/gpse/includes/class-wp-gpse-admin.php
+++ b/gpse/includes/class-wp-gpse-admin.php
@@ -238,10 +238,13 @@ public function results_page_callback() {
?>
[gpse_results]'
+ echo wp_kses(
+ sprintf(
+ /* translators: %s: shortcode tag [gpse_results] */
+ __( 'Select the page where you have placed the %s shortcode. Native searches will be redirected here.', 'gpse' ),
+ '[gpse_results]'
+ ),
+ array( 'code' => array() )
);
?>
diff --git a/gpse/includes/class-wp-gpse-frontend.php b/gpse/includes/class-wp-gpse-frontend.php
index c9f760c..397c201 100644
--- a/gpse/includes/class-wp-gpse-frontend.php
+++ b/gpse/includes/class-wp-gpse-frontend.php
@@ -46,6 +46,11 @@ public function init() {
* @return void
*/
public function enqueue_styles() {
+ $results_page_id = get_option( 'wp_gpse_results_page_id' );
+ if ( empty( $results_page_id ) || ! is_page( $results_page_id ) ) {
+ return;
+ }
+
wp_enqueue_style( 'gpse-style', GPSE_URL . 'assets/css/gpse.css', array(), GPSE_VERSION );
// Get margin value and ensure it's a positive integer (defense in depth)
@@ -68,6 +73,11 @@ public function enqueue_styles() {
* @return void
*/
public function enqueue_google_script() {
+ $results_page_id = get_option( 'wp_gpse_results_page_id' );
+ if ( empty( $results_page_id ) || ! is_page( $results_page_id ) ) {
+ return;
+ }
+
$cx_id = get_option( 'wp_gpse_cx_id' );
if ( ! empty( $cx_id ) ) {
wp_enqueue_script(
@@ -91,6 +101,11 @@ public function enqueue_google_script() {
* @return void
*/
public function enqueue_init_script() {
+ $results_page_id = get_option( 'wp_gpse_results_page_id' );
+ if ( empty( $results_page_id ) || ! is_page( $results_page_id ) ) {
+ return;
+ }
+
wp_enqueue_script(
'gpse-init',
GPSE_URL . 'assets/js/gpse-init.js',
diff --git a/gpse/readme.txt b/gpse/readme.txt
index 81210cc..c10869f 100644
--- a/gpse/readme.txt
+++ b/gpse/readme.txt
@@ -2,7 +2,7 @@
Contributors: ACLabs
Tags: search, google, gcse, programmable search, cse
Requires at least: 6.4
-Tested up to: 6.9.4
+Tested up to: 6.9
Stable tag: 1.2.4
Requires PHP: 8.2
License: AGPL v3 or later
@@ -14,6 +14,8 @@ Redirects WordPress searches to display Google Programmable Search Engine (GCSE)
Redirects WordPress searches to display Google Programmable Search Engine (GCSE) results. Works seamlessly with the standard WordPress Search block or your theme's search form.
+Source code is publicly available on [GitHub](https://github.com/ACLabs-Code/wp-gpse).
+
=== Features ===
* **Seamless Integration**: Works with the standard WordPress Search block or your theme's search form.
@@ -43,10 +45,15 @@ Redirects WordPress searches to display Google Programmable Search Engine (GCSE)
* Add the standard WordPress **Search** block to your site (header, sidebar, page, etc.).
* Or use your theme's built-in search form.
-== Screenshots ==
+== Third-Party Services ==
+
+This plugin relies on Google Programmable Search Engine, an external service provided by Google LLC. When a visitor views your configured search results page, their browser loads a JavaScript file from `cse.google.com` and search queries are sent to Google's servers to retrieve results.
+
+By using this plugin you agree to be bound by Google's Terms of Service and acknowledge their Privacy Policy:
-1. Plugin settings page — enter your Google Search Engine ID and select the results page.
-2. Search results page — displays Google Programmable Search Engine results inline.
+* [Google Terms of Service](https://policies.google.com/terms)
+* [Google Privacy Policy](https://policies.google.com/privacy)
+* [Google Programmable Search Engine](https://programmablesearchengine.google.com/)
== Changelog ==
From 291a73ee739e2af0619e4d65b9677c5e24c2e95e Mon Sep 17 00:00:00 2001
From: Andrew Cockrell <1480054+acockrell@users.noreply.github.com>
Date: Sun, 22 Mar 2026 19:45:29 -0700
Subject: [PATCH 2/2] Regenerate gpse.pot: fix author, remove stale search-form
strings
---
gpse/languages/gpse.pot | 107 ++++++++++++----------------------------
1 file changed, 31 insertions(+), 76 deletions(-)
diff --git a/gpse/languages/gpse.pot b/gpse/languages/gpse.pot
index cb744f4..554a6a5 100644
--- a/gpse/languages/gpse.pot
+++ b/gpse/languages/gpse.pot
@@ -1,124 +1,79 @@
-# Copyright (C) 2026 Gemini
-# This file is distributed under the AGPL v3 or later.
+# Copyright (C) 2026 GPSE Search
+# This file is distributed under the same license as the GPSE Search package.
msgid ""
msgstr ""
-"Project-Id-Version: GPSE Search 1.1.0\n"
-"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/gpse\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: LANGUAGE \n"
+"Project-Id-Version: GPSE Search\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2026-01-15T07:38:16+00:00\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"X-Generator: WP-CLI 2.12.0\n"
-"X-Domain: gpse\n"
-
-#. Plugin Name of the plugin
-#: gpse.php
-#: includes/class-wp-gpse-admin.php:83
-msgid "GPSE Search"
-msgstr ""
-
-#. Description of the plugin
-#: gpse.php
-msgid "Replaces the standard WordPress search with a Google Programmable Search Engine (GCSE)."
-msgstr ""
-
-#. Author of the plugin
-#: gpse.php
-msgid "Gemini"
-msgstr ""
-
-#: includes/class-wp-gpse-admin.php:43
+"Language-Team: ACLabs\n"
+"Last-Translator: ACLabs\n"
+"POT-Creation-Date: 2026-03-23 02:41+0000\n"
+"X-Poedit-Basepath: ..\n"
+"X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
+"X-Poedit-SearchPath-0: .\n"
+"X-Poedit-SearchPathExcluded-0: *.js\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: gpse/includes/class-wp-gpse-admin.php:43
msgid "Settings"
msgstr ""
-#: includes/class-wp-gpse-admin.php:59
+#: gpse/includes/class-wp-gpse-admin.php:59
msgid "GPSE Settings"
msgstr ""
-#: includes/class-wp-gpse-admin.php:60
+#: gpse/includes/class-wp-gpse-admin.php:60
msgid "GPSE"
msgstr ""
-#: includes/class-wp-gpse-admin.php:79
+#: gpse/includes/class-wp-gpse-admin.php:79
msgid "You do not have sufficient permissions to access this page."
msgstr ""
-#: includes/class-wp-gpse-admin.php:138
+#: gpse/includes/class-wp-gpse-admin.php:83
+msgid "GPSE Search"
+msgstr ""
+
+#: gpse/includes/class-wp-gpse-admin.php:138
msgid "Configuration"
msgstr ""
-#: includes/class-wp-gpse-admin.php:145
+#: gpse/includes/class-wp-gpse-admin.php:145
msgid "Search Engine ID (CX)"
msgstr ""
-#: includes/class-wp-gpse-admin.php:153
+#: gpse/includes/class-wp-gpse-admin.php:153
msgid "Search Results Page"
msgstr ""
-#: includes/class-wp-gpse-admin.php:161
+#: gpse/includes/class-wp-gpse-admin.php:161
msgid "Autocomplete Top Margin (px)"
msgstr ""
-#: includes/class-wp-gpse-admin.php:178
+#: gpse/includes/class-wp-gpse-admin.php:178
msgid "Enter your Google Programmable Search Engine details below."
msgstr ""
-#: includes/class-wp-gpse-admin.php:194
+#: gpse/includes/class-wp-gpse-admin.php:194
msgid "You can find this in your Google Programmable Search Engine control panel."
msgstr ""
-#: includes/class-wp-gpse-admin.php:219
+#: gpse/includes/class-wp-gpse-admin.php:219
msgid "Select a page"
msgstr ""
#. translators: %s: shortcode tag [gpse_results]
-#: includes/class-wp-gpse-admin.php:243
-#, php-format
+#: gpse/includes/class-wp-gpse-admin.php:244
msgid "Select the page where you have placed the %s shortcode. Native searches will be redirected here."
msgstr ""
-#: includes/class-wp-gpse-admin.php:264
+#: gpse/includes/class-wp-gpse-admin.php:267
msgctxt "pixels unit abbreviation"
msgid "px"
msgstr ""
-#: includes/class-wp-gpse-admin.php:265
+#: gpse/includes/class-wp-gpse-admin.php:268
msgid "Adjust this if the autocomplete dropdown covers your search input. Default is 15."
msgstr ""
-
-#: build/search-form/index.js:1
-#: src/search-form/index.js:13
-msgid "GPSE Search Form"
-msgstr ""
-
-#: build/search-results/index.js:1
-#: src/search-results/index.js:13
-msgid "GPSE Search Results"
-msgstr ""
-
-#: build/search-form/block.json
-#: src/search-form/block.json
-msgctxt "block title"
-msgid "GPSE Search Form"
-msgstr ""
-
-#: build/search-form/block.json
-#: src/search-form/block.json
-msgctxt "block description"
-msgid "Google Programmable Search Engine form."
-msgstr ""
-
-#: build/search-results/block.json
-#: src/search-results/block.json
-msgctxt "block title"
-msgid "GPSE Search Results"
-msgstr ""
-
-#: build/search-results/block.json
-#: src/search-results/block.json
-msgctxt "block description"
-msgid "Google Programmable Search Engine results list."
-msgstr ""