{"id":343421,"date":"2026-11-02T07:35:31","date_gmt":"2026-11-02T07:35:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ppl-search-suite\/"},"modified":"2026-11-02T07:35:06","modified_gmt":"2026-11-02T07:35:06","slug":"ppl-search-suite","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ppl-search-suite\/","author":23534866,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.4","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"PPL Search Suite","header_author":"PPL","header_description":"Local WooCommerce product search suggestions and practical product recommendations.","assets_banners_color":"","last_updated":"2026-11-02 07:35:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/ppl-ds.com\/wordpress\/plugins\/ppl-search-suite\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":123,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"pplds","date":"2026-11-02 07:35:06","revision":3779157}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[3226,5183,3669,6903,286],"plugin_category":[45,53],"plugin_contributors":[290179],"plugin_business_model":[],"class_list":["post-343421","plugin","type-plugin","status-publish","hentry","plugin_tags-autocomplete","plugin_tags-product-search","plugin_tags-recommendations","plugin_tags-related-products","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-ratings-and-reviews","plugin_contributors-pplds","plugin_committers-pplds"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/ppl-search-suite.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>PPL Search Suite improves WooCommerce discovery without tracking or an external search service.<\/p>\n\n<p>The plugin includes:<\/p>\n\n<ul>\n<li>Local autocomplete suggestions for standard WooCommerce product search forms.<\/li>\n<li>A read-only, bounded REST endpoint that returns published product suggestions.<\/li>\n<li>Related-product and top-seller recommendations.<\/li>\n<li>The <code>[ppl_search_suite_recommendations]<\/code> shortcode.<\/li>\n<li>An optional recommendation section on single-product pages.<\/li>\n<li>Bounded settings for search length, result counts, stock filtering, and recommendation mode.<\/li>\n<\/ul>\n\n<p>All searches and recommendations use product data stored on your WordPress site. The plugin does not send search terms, product data, or visitor data to a third party.<\/p>\n\n<h3>External services and privacy<\/h3>\n\n<p>PPL Search Suite does not contact an external service. Product searches and recommendations run against WordPress and WooCommerce data on your own site.<\/p>\n\n<p>The plugin does not add analytics, telemetry, advertising, or visitor tracking. It does not send search terms, product data, settings, or visitor data to PPL DS or another provider.<\/p>\n\n<p>To protect the public suggestions endpoint from request bursts, the server derives a site-specific, keyed pseudonym for each request interval. For guests, it briefly processes the connection's IP address in memory; signed-in requests use the local account ID. The limiter stores the pseudonym, counters, and an independent random key for that interval, not raw IP addresses, account IDs, or page tokens. The key expires with the counter interval and does not reuse WordPress authentication secrets. It ignores proxy-forwarding headers and does not create a cookie or browser-storage identity.<\/p>\n\n<p>Guests behind the same public connection address share a 90-request budget for the interval. Different connection addresses and signed-in accounts have separate budgets, subject to the shared endpoint limit of 600 requests per interval. An interval lasts 60 seconds; changing a page token does not create a new budget. Sites behind a reverse proxy should ensure the web server supplies the intended connection address; otherwise visitors may share the proxy's budget. When the bounded counter map is full, new client identities wait for expiry.<\/p>\n\n<p>Counters stop applying when their interval expires. Stored expired records are replaced on a subsequent successful counter write or removed by scheduled WordPress cleanup; expiry does not promise immediate physical deletion. These local counters are used for request limiting, not analytics or visitor profiles.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>Upload the <code>ppl-search-suite<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin from the WordPress Plugin Directory.<\/li>\n<li>Activate PPL Search Suite.<\/li>\n<li>Open WooCommerce &gt; PPL Search Suite to review the settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20require%20an%20api%20key%3F\"><h3>Does the plugin require an API key?<\/h3><\/dt>\n<dd><p>No. Every feature runs locally with WordPress and WooCommerce.<\/p><\/dd>\n<dt id=\"is%20visitor%20activity%20tracked%3F\"><h3>Is visitor activity tracked?<\/h3><\/dt>\n<dd><p>No. The plugin adds no analytics, telemetry, advertising, or external service calls.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20recommendations%20to%20a%20page%3F\"><h3>How do I add recommendations to a page?<\/h3><\/dt>\n<dd><p>Add <code>[ppl_search_suite_recommendations]<\/code> to a page, post, or product description.<\/p>\n\n<p>You can select the mode and limit:<\/p>\n\n<pre><code>[ppl_search_suite_recommendations mode=\"related\" limit=\"4\"]\n<\/code><\/pre>\n\n<p>For related products outside a product page, provide a product ID:<\/p>\n\n<pre><code>[ppl_search_suite_recommendations product_id=\"123\" mode=\"related\" limit=\"4\"]\n<\/code><\/pre>\n\n<p>Use <code>mode=\"top_sellers\"<\/code> to show products ordered by local WooCommerce sales data.<\/p><\/dd>\n<dt id=\"is%20the%20suggestions%20endpoint%20public%3F\"><h3>Is the suggestions endpoint public?<\/h3><\/dt>\n<dd><p>Yes. Product search is a public storefront action, so the read-only endpoint is public. It accepts only a sanitized search term and a result limit. Term length, result count, query size, post type, and post status are bounded. It returns only visible, published products.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>First WordPress.org release.<\/li>\n<li>Added bounded local product search suggestions.<\/li>\n<li>Added accessible autocomplete behavior for WooCommerce search forms.<\/li>\n<li>Added related-product and top-seller recommendations.<\/li>\n<li>Added bounded WooCommerce settings.<\/li>\n<\/ul>","raw_excerpt":"Local WooCommerce product suggestions and simple related-product or top-seller recommendations.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/343421","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=343421"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pplds"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=343421"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=343421"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=343421"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=343421"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=343421"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=343421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}