Settings & Options

All Grid Panda settings are stored in the WordPress options table with the gridpanda_ prefix. They are managed through the Grid Panda → Settings admin page and the REST API atGET/PUT /wp-json/gridpanda/v1/settings.

Caching

Controls REST API response caching and ETag support.

Option KeyTypeDefaultDescription
gridpanda_enable_cachingbooltrueMaster switch for REST API response caching. When disabled, every render request hits the database directly.
gridpanda_cache_ttlint (seconds)3600How long rendered grid responses are cached. Default 1 hour. Set to 0 to disable TTL-based expiry.
gridpanda_rest_cache_ttlint (seconds)3600Separate TTL for other REST endpoints (facet choices, stats). Allows different cache lifetimes for read-heavy endpoints.
gridpanda_enable_etagbooltrueWhen true, REST responses include an ETag header. Clients that send a matching If-None-Match get a 304 Not Modified, saving bandwidth.

API & Security

CORS policy and rate limiting for the REST API.

Option KeyTypeDefaultDescription
gridpanda_enable_corsboolfalseAdd Access-Control-Allow-Origin headers to REST responses. Only needed for headless setups where the frontend domain differs from WordPress.
gridpanda_cors_originstringhome_url()The allowed origin domain when CORS is enabled. Defaults to the WordPress home URL. Accepts a single origin or '*'.
gridpanda_rate_limit_enabledbooltrueEnable request rate limiting per IP. Prevents abuse of the public render endpoint.
gridpanda_rate_limit_requestsint60Maximum number of requests per minute per IP before 429 Too Many Requests is returned.
gridpanda_enable_debugboolfalseLog Grid Panda errors and query details to the PHP error log. Do not enable on production — increases log verbosity significantly.

Indexing

Controls the batch size and processing behaviour of the indexer.

Option KeyTypeDefaultDescription
gridpanda_index_batch_sizeint (10–1000)100How many posts are indexed per queue job execution. Lower values reduce peak DB load; higher values speed up full reindexes on capable servers.
gridpanda_index_per_requestint (10–1000)100Alias used in some contexts for batch size. Same constraint range.

SEO

Controls canonical URLs, robots directives, meta templates, Open Graph, and sitemap integration. See the SEO documentation for full details on each feature.

Option KeyTypeDefaultDescription
gridpanda_seo_clean_urls_enabledboolfalseEnable clean permalink-style filter URLs (/shop/filter/color-red/) instead of query strings (?fx_color=red). Requires pretty permalinks.
gridpanda_seo_max_indexable_depthint (1–10)2Maximum facet depth level to include in the XML sitemap. Depth 1 = single-facet URLs. Depth 2+ = multi-facet combinations (use with care — exponential growth).
gridpanda_seo_robots_strategystring'noindex'How to handle robots for filtered pages. 'noindex' adds noindex,follow. 'canonical_only' relies on canonical URL to deduplicate without noindex.
gridpanda_seo_meta_title_templatestring''Template for filter page <title>. Supports placeholders: {filter_label}, {filter_value}, {site_name}, {page_title}. Empty = use the base page title.
gridpanda_seo_meta_description_templatestring''Template for the meta description on filtered pages. Same placeholders as the title template.
gridpanda_seo_enable_open_graphbooltrueOutput Open Graph meta tags (og:title, og:description, og:url) on filtered pages.
gridpanda_seo_enable_sitemapboolfalseInclude indexable filter URLs in the XML sitemap. Integrates with WordPress core sitemaps, Yoast SEO, and Rank Math.

Integrations

Grid Panda auto-detects active plugins. This setting lets you explicitly enable or disable individual integration modules.

Option KeyTypeDefaultDescription
gridpanda_enabled_integrationsarray of slugs[]List of integration slugs to activate. Auto-detection populates this on first activation. Valid slugs: woocommerce, acf, elementor, wpml, polylang.

Responsive Breakpoints

Grid columns and layout settings use these breakpoints to switch between mobile, tablet, and desktop views.

Option KeyTypeDefaultDescription
gridpanda_breakpoint_mobileint (px)768Maximum viewport width considered mobile. Below this value the grid switches to the configured mobile column count.
gridpanda_breakpoint_tabletint (px)1024Maximum viewport width considered tablet. Between mobile and this value the tablet column count is used.

Advanced

Plugin lifecycle and data management settings.

Option KeyTypeDefaultDescription
gridpanda_permalink_slugstring'filter'The URL segment used in clean filter URLs. Default produces /shop/filter/color-red/. Change to a different slug if 'filter' conflicts with another route.
gridpanda_delete_data_on_uninstallboolfalseWhen true, all Grid Panda database tables and wp_options entries are deleted on plugin uninstall. Leave false to preserve data across reinstalls.
gridpanda_versionstring"1.0.0"Installed plugin version stored in options. Used by the migration system to determine which schema migrations have already run.

Managing Settings via REST API

All settings are accessible programmatically via the Settings REST endpoints. Requires manage_options capability.

Read all settings

GET /wp-json/gridpanda/v1/settings
Authorization: Basic base64(user:app_password)

Response: {
  "enable_caching": true,
  "cache_ttl": 3600,
  "seo_clean_urls_enabled": false,
  ...
}

Update settings (partial update supported)

PUT /wp-json/gridpanda/v1/settings
Content-Type: application/json

{
  "enable_caching": false,
  "seo_clean_urls_enabled": true,
  "seo_robots_strategy": "canonical_only"
}

Export & import settings

# Export full settings bundle
POST /wp-json/gridpanda/v1/settings/export
Response: { "settings": {...}, "counts": {...}, "version": "1.0.0" }

# Import settings bundle
POST /wp-json/gridpanda/v1/settings/import
Body: { "settings": {...} }
Response: { "success": true, "imported": 18, "keys": [...] }

# Purge all cached responses
POST /wp-json/gridpanda/v1/settings/purge-cache

Overriding Settings via Filters

Many settings can be overridden at runtime using WordPress filters without changing the stored option value. This is useful for multi-site setups or environment-specific configuration:

// Disable clean URLs on specific pages
add_filter( 'gridpanda/seo/clean_urls_enabled', function( $enabled ) {
    if ( is_page( 'checkout' ) ) {
        return false;
    }
    return $enabled;
} );

// Override robots strategy programmatically
add_filter( 'gridpanda/seo/robots_strategy', function( $strategy ) {
    return 'canonical_only';
} );

// Override rate limit per authenticated user
add_filter( 'gridpanda/rest/rate_limit', function( $limit, $is_authenticated ) {
    return $is_authenticated ? 300 : 60;
}, 10, 2 );