[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fexAIy7yXRqK3djPaQQ7fCGlF81Z1CVaoQFejik65crk":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":23,"download_link":24,"security_score":25,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28,"vulnerabilities":29,"developer":30,"crawl_stats":27,"alternatives":36,"analysis":139,"fingerprints":197},"gravity-forms-entry-expiration","Entry Expiration for Gravity Forms","2.2.1","Travis Lopes","https:\u002F\u002Fprofiles.wordpress.org\u002Ftravislopes\u002F","\u003Cblockquote>\n\u003Ch4>\u003Ca href=\"https:\u002F\u002Fcosmicgiant.com\u002Fplugins\u002Fentry-automation\u002F?utm_source=wordpress&utm_medium=readme&utm_campaign=readme\" rel=\"nofollow ugc\">Entry Automation for Gravity Forms\u003C\u002Fa> makes entry deletion more powerful and allows you to export your entries too!\u003C\u002Fh4>\n\u003Cp>Entry Expiration started out as a simple tool to automatically remove your old form entries. But what if you need more control over when entries are deleted? Want to apply conditional logic to target specific entries? Or maybe delete specific field values rather than the whole entry? Need to generate an export file before getting rid of those entries?\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fcosmicgiant.com\u002Fplugins\u002Fentry-automation\u002F?utm_source=wordpress&utm_medium=readme&utm_campaign=readme\" rel=\"nofollow ugc\">Check out Entry Automation\u003C\u002Fa> today!\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>When integrating Gravity Forms with a third-party service, it’s often not necessary to keep entries around after a short period of time as you already have the data imported elsewhere.\u003C\u002Fp>\n\u003Cp>Entry Expiration for Gravity Forms allows you to automatically delete Gravity Forms entries older than a defined timeframe. After activating the plugin, set the oldest age for an entry on the Entry Expiration Settings page. At midnight, the plugin will delete all entries on enabled forms that are older than the time you set.\u003C\u002Fp>\n","Automatically remove old form entries on a custom, defined schedule",1000,65002,100,4,"2023-08-01T20:36:00.000Z","6.3.0","5.3.0","5.3",[20,21,22],"entry","expiration","gravity-forms","https:\u002F\u002Ftravislop.es\u002Fplugins\u002Fgravity-forms-entry-expiration\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgravity-forms-entry-expiration.zip",85,0,null,"2026-03-15T15:16:48.613Z",[],{"slug":31,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":11,"avg_security_score":25,"avg_patch_time_days":33,"trust_score":34,"computed_at":35},"travislopes",1,30,84,"2026-04-04T17:28:17.217Z",[37,59,81,98,117],{"slug":38,"name":39,"version":40,"author":41,"author_profile":42,"description":43,"short_description":44,"active_installs":45,"downloaded":46,"rating":47,"num_ratings":32,"last_updated":48,"tested_up_to":49,"requires_at_least":50,"requires_php":51,"tags":52,"homepage":57,"download_link":58,"security_score":13,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"gf-no-duplicates","GF No Duplicates","1.2","Samuel Aguilera","https:\u002F\u002Fprofiles.wordpress.org\u002Fsamuelaguilera\u002F","\u003Cp>Gravity Forms already has some built-in duplicate submission prevention techniques, including the No Duplicates setting for a field in your form, preventing the same field value from being used multiple times for the same form. Using this setting is a rock solid approach to avoid duplicate submissions, but it requires having a field in your form that you can consider as a source of unique data per submission.\u003C\u002Fp>\n\u003Cp>This add-on helps using the same idea, without requiring having a field to enable the No Duplicates setting, by dynamically adding a hidden input with a random token to the form, and checks the \u003Ca href=\"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTTP\u002FMethods\u002FPOST\" rel=\"nofollow ugc\">POST request\u003C\u002Fa> received for this token value to prevent duplicate submissions.\u003C\u002Fp>\n\u003Cp>This will \u003Cstrong>stop identical POST requests\u003C\u002Fstrong> from being accepted for entry creation, like the ones that some browsers will send when the browser back or refresh buttons are clicked or when browser tabs are restored in mobile devices.\u003C\u002Fp>\n\u003Ch4>Limitations\u003C\u002Fh4>\n\u003Col>\n\u003Cli>If for any reason the visitor manually fills the form with the same information, and submits it again, \u003Cstrong>blocking this visitor’s behavior is not within the scope of this plugin functionality\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>To put in another way, the add-on is intended to \u003Cstrong>block automated resend of the same POST request data, it doesn’t block submissions voluntarily initiated by the visitor\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Col>\n\u003Cli>If your site is still receiving repeated POST requests \u003Cstrong>created before enabling the add-on\u003C\u002Fstrong>, therefore not containing the token field, you would still receive duplicates for these entries. There’s no way for the add-on to be able stop duplicates for requests \u003Cstrong>created before enabling the add-on\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>How it works:\u003C\u002Fh4>\n\u003Col>\n\u003Cli>\u003Cstrong>When the add-on is enabled\u003C\u002Fstrong> a hidden input with a random token as value is added to each form dynamically in the front-end.\u003C\u002Fli>\n\u003Cli>When a POST request is received and handled by Gravity Forms, GF No Duplicates checks if this POST request has the token and if its value was used already in an existing entry \u003Cstrong>for the form tied to the POST request\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>If the token parameter exists but is empty or there’s any form entry where the token value was used already, GF No Duplicates stops the submission.\u003C\u002Fli>\n\u003Cli>The form is replaced with an error message, which contains a link to the form page, suggesting the visitor to click the link to start a fresh new submission.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Requirements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>PHP 7.0 or higher.\u003C\u002Fli>\n\u003Cli>WordPress 4.9 or higher.\u003C\u002Fli>\n\u003Cli>Gravity Forms 2.5 or higher.\u003C\u002Fli>\n\u003Cli>The page where the form is embedded must be \u003Cstrong>excluded from cache\u003C\u002Fstrong> (if you use any caching plugin or server cache, see note below).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Usage\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Install and activate it as you do with any other plugin.\u003C\u002Fli>\n\u003Cli>Enjoy!\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Optionally, you can customize the duplicate submission message shown to users from the settings page or using a filter (see the FAQ).\u003C\u002Fp>\n\u003Ch4>Note about Caching\u003C\u002Fh4>\n\u003Cp>The add-on functionality relies on a \u003Cstrong>random\u003C\u002Fstrong> token generated \u003Cstrong>dynamically\u003C\u002Fstrong>, so for obvious reasons caching the page where your form is embedded would prevent the add-on from working as expected. This is not a limitation of the add-on but the expected if you’re serving a static version of your page, which is the only reason to cache a page, you shouldn’t never cache pages where you expect dynamic data.\u003C\u002Fp>\n\u003Cp>Most caching plugins provide you a way to exclude URLs from cache, this is for a reason, use it.\u003C\u002Fp>\n\u003Cp>There are some web hosting providers using cache at server level and not providing their customers with an interface to exclude URLs from cache (e.g. WP Engine, Kinsta, …), you can still ask your host support staff to add the exclusion for you.\u003C\u002Fp>\n\u003Cp>You can also use \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Ffresh-forms-for-gravity\u002F\" rel=\"ugc\">Fresh Forms\u003C\u002Fa> for automated cache exclusion if you use any of the embedding methods and caching plugins supported (see Fresh Forms description for more details).\u003C\u002Fp>\n","Prevents duplicate Gravity Forms submissions caused by the same POST request sent more than once.",700,6674,80,"2026-01-13T09:35:00.000Z","6.9.4","4.9","7.0",[53,54,55,22,56],"duplicated-entry","duplicated-submission","duplicates","gravityforms","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgf-no-duplicates.1.2.zip",{"slug":60,"name":61,"version":62,"author":63,"author_profile":64,"description":65,"short_description":66,"active_installs":67,"downloaded":68,"rating":69,"num_ratings":70,"last_updated":71,"tested_up_to":72,"requires_at_least":73,"requires_php":57,"tags":74,"homepage":79,"download_link":80,"security_score":25,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"gravity-forms-entries-inventory-management","Gravity Forms Entries Inventory Management","1.0.0","Marius Vetrici","https:\u002F\u002Fprofiles.wordpress.org\u002Fmariusvetrici\u002F","\u003Cp>The Gravity Forms Entries Inventory Management provides an easy way to accept a given number of bookings\u002Fsell X tickets on your website.\u003C\u002Fp>\n\u003Cp>Mark the desired field with ‘gfinventory’ css class in the Field Appearence tab. Further to this the plugin will:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Sum up the values from the ‘gfinventory’ field from all the available Entries of this form\u003C\u002Fli>\n\u003Cli>Will compare that total with the “Number of Entries” (total entries) option from Form Settings tab.\u003C\u002Fli>\n\u003Cli>Will display any needed validation both at \u003Cem>form load time\u003C\u002Fem> as well as upon \u003Cem>form submit\u003C\u002Fem>.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Note!\u003Cbr \u002F>\nPlugin works with “total entries” option for Number of Entries.\u003Cbr \u002F>\nPlugin \u003Cstrong>not\u003C\u002Fstrong> tested with other Number of Entries limits like:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>per day  \u003C\u002Fli>\n\u003Cli>per week  \u003C\u002Fli>\n\u003Cli>per month  \u003C\u002Fli>\n\u003Cli>per year\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Compatibility\u003C\u002Fh4>\n\u003Cp>This plugin is compatible with:\u003Cbr \u002F>\n* Gravity Forms >= 1.9.12.10\u003C\u002Fp>\n","Entries inventory management for Gravity Forms.",60,2814,46,3,"2016-03-17T09:58:00.000Z","4.4.34","3.5",[75,22,76,77,78],"entry-limits","inventory","inventory-management","tickets","http:\u002F\u002Fwww.wpriders.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgravity-forms-entries-inventory-management.zip",{"slug":82,"name":83,"version":62,"author":84,"author_profile":85,"description":86,"short_description":87,"active_installs":88,"downloaded":89,"rating":13,"num_ratings":32,"last_updated":90,"tested_up_to":91,"requires_at_least":57,"requires_php":57,"tags":92,"homepage":57,"download_link":96,"security_score":97,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"pdf-zip-downloader-for-gravity-forms","PDF Zip Downloader for Gravity Forms","Martin","https:\u002F\u002Fprofiles.wordpress.org\u002Fmartin695\u002F","\u003Cp>PDF Zip Downloader for Gravity Forms allows you to export a Gravity Forms entry as a ZIP file that includes:\u003Cbr \u002F>\n– A PDF generated from the form data.\u003Cbr \u002F>\n– File attachments submitted with the form.\u003C\u002Fp>\n\u003Cp>Perfect for organizing and sharing form data in a single compressed file.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Select which generated PDF to include in the ZIP from the form settings.\u003C\u002Fli>\n\u003Cli>Configure the form fields that will compose the ZIP file name.\u003C\u002Fli>\n\u003Cli>Download file attachments directly into the ZIP.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This plugin uses Gravity PDF to generate the PDFs. Ensure it is installed and configured before using this plugin.\u003C\u002Fp>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cp>Developed by Martín Arufe.\u003C\u002Fp>\n\u003Ch3>License Notes\u003C\u002Fh3>\n\u003Cp>This plugin is licensed under GPLv2 or later. You are free to use and modify it under the terms of this license.\u003C\u002Fp>\n","Generates a ZIP file that includes a PDF and the attachments from a Gravity Forms entry.",10,728,"2025-01-28T18:42:00.000Z","6.7.5",[20,93,22,94,95],"export","pdf","zip","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpdf-zip-downloader-for-gravity-forms.1.0.0.zip",92,{"slug":99,"name":100,"version":101,"author":102,"author_profile":103,"description":104,"short_description":105,"active_installs":26,"downloaded":106,"rating":26,"num_ratings":26,"last_updated":57,"tested_up_to":49,"requires_at_least":107,"requires_php":108,"tags":109,"homepage":114,"download_link":115,"security_score":13,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":116},"gravityops-search","GravityOps Search – Search and Display Gravity Forms Entries","1.0.6.1","BrightLeaf Digital","https:\u002F\u002Fprofiles.wordpress.org\u002Feitanatbrightleaf\u002F","\u003Cp>GravityOps Search is a free, powerful shortcode for searching Gravity Forms entries on the front end and displaying the matching results anywhere on your site. Instead of paging through the admin entries screen, you can drop a single shortcode into a page, post, GravityView, or custom template and surface exactly the data you need. It works like an Excel-style lookup for Gravity Forms entries: you define which forms and fields to search, how to compare the values, and what to output for each match.\u003C\u002Fp>\n\u003Cp>The core \u003Ccode>[gravops_search]\u003C\u002Fcode> shortcode lets you target one form, several forms, or even all forms at once. You can filter by one field or many, pass in values directly in the shortcode content, and control whether entries must match all conditions or any of them. The same shortcode can handle simple lookups (showing a single field from the latest matching entry) or more complex reporting-style views that combine fields, entry properties, and custom HTML. Because everything is driven by attributes, you stay in full control of which entries are included and how their data appears on the front end.\u003C\u002Fp>\n\u003Cp>Results are rendered through a flexible \u003Ccode>display\u003C\u002Fcode> attribute, which understands both simple comma-separated field lists and advanced custom display strings with placeholders. You can output raw values, mix multiple fields into labeled text, or construct HTML lists, tables, and cards with links, CSS classes, and nested shortcodes. This gives you a fully custom front-end listing of Gravity Forms entries that you can drop into any layout, theme, or builder, without building a custom query or touching PHP.\u003C\u002Fp>\n\u003Cp>GravityOps Search fully supports Gravity Forms entry properties (such as entry ID, form ID, created-by, and more) alongside regular fields, and it includes options for sorting, limiting, and deduplicating results before they are rendered. You can sort by field values or entry properties, choose ascending, descending, or random ordering, add a secondary sort key, and request unique values only. When no entries match, you can show fallback text or per-field default values, so front-end visitors never see a broken layout or confusing blank output.\u003C\u002Fp>\n\u003Cp>This plugin is built explicitly for front-end entry search and display. It does not add live search tools to the Gravity Forms admin area and does not replace the Entries screen. Instead, it focuses on one thing and does it well: querying Gravity Forms entries in the background and printing clean, formatted results on the pages your users actually see.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Front-end search for Gravity Forms entries using a single, flexible shortcode.\u003C\u002Fli>\n\u003Cli>Target all forms, a single form, or a comma-separated list of form IDs using the \u003Ccode>target\u003C\u002Fcode> attribute.\u003C\u002Fli>\n\u003Cli>Filter entries by a comma-separated list of field IDs or entry properties via the \u003Ccode>search\u003C\u002Fcode> attribute.\u003C\u002Fli>\n\u003Cli>Pass search values in the shortcode content, separated by a pipe (\u003Ccode>|\u003C\u002Fcode>) to match positions with the fields in \u003Ccode>search\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Choose whether entries must match all search conditions (default) or any condition by setting \u003Ccode>search_mode=\\\"any\\\"\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Use the \u003Ccode>operators\u003C\u002Fcode> attribute to control how each value is compared to its field, with support for equals, not-equals, partial matches, SQL-style \u003Ccode>LIKE\u003C\u002Fcode>, “in” \u002F “not in” arrays, and numeric comparisons (greater than \u002F less than \u002F greater-or-equal \u002F less-or-equal).\u003C\u002Fli>\n\u003Cli>Display one or many fields and properties for each result using the \u003Ccode>display\u003C\u002Fcode> attribute, which supports both simple lists and rich custom templates.\u003C\u002Fli>\n\u003Cli>Include entry properties and field values in your output using placeholder formats like \u003Ccode>{13}\u003C\u002Fcode>, \u003Ccode>{id}\u003C\u002Fcode>, \u003Ccode>{form_id}\u003C\u002Fcode>, and \u003Ccode>{gos:id}\u003C\u002Fcode> where appropriate.\u003C\u002Fli>\n\u003Cli>Build fully custom HTML output (lists, tables, cards, badges, buttons, links) directly inside the \u003Ccode>display\u003C\u002Fcode> string.\u003C\u002Fli>\n\u003Cli>Insert CSS classes and inline markup into the output so results adopt your theme’s design and layout patterns.\u003C\u002Fli>\n\u003Cli>Use the \u003Ccode>separator\u003C\u002Fcode> attribute to control how multiple entry results are separated (including HTML separators or no separator at all using \u003Ccode>__none__\u003C\u002Fcode>).\u003C\u002Fli>\n\u003Cli>Sort entries using \u003Ccode>sort_key\u003C\u002Fcode>, \u003Ccode>sort_direction\u003C\u002Fcode>, and \u003Ccode>sort_is_num\u003C\u002Fcode>, with optional \u003Ccode>secondary_sort_key\u003C\u002Fcode> and \u003Ccode>secondary_sort_direction\u003C\u002Fcode> for tie-breaking.\u003C\u002Fli>\n\u003Cli>Limit the number of results returned with \u003Ccode>limit\u003C\u002Fcode>, including support for \u003Ccode>limit=\\\"all\\\"\u003C\u002Fcode> when you need to show every matching entry.\u003C\u002Fli>\n\u003Cli>Turn on \u003Ccode>unique\u003C\u002Fcode> to return only unique result values, great for building deduplicated lists such as unique email addresses, user IDs, or other fields.\u003C\u002Fli>\n\u003Cli>Search for empty or blank values with the \u003Ccode>search_empty\u003C\u002Fcode> attribute and an empty shortcode content, to find incomplete or missing data.\u003C\u002Fli>\n\u003Cli>Provide fallback values when no entries match—or when individual fields are empty—using the \u003Ccode>default\u003C\u002Fcode> attribute.\u003C\u002Fli>\n\u003Cli>Add an admin link to each result with the \u003Ccode>link\u003C\u002Fcode> attribute so power users can jump directly from the front end to the entry in the Gravity Forms admin.\u003C\u002Fli>\n\u003Cli>Designed to work smoothly alongside GravityView, GravityMath, and other shortcodes that can be nested inside the output.\u003C\u002Fli>\n\u003Cli>Compatible with the legacy \u003Ccode>gfsearch\u003C\u002Fcode> snippet approach while offering ongoing updates and a more robust, plugin-based implementation.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How It Works\u003C\u002Fh3>\n\u003Cp>At its core, GravityOps Search evaluates your shortcode attributes and content to determine which entries to fetch, then formats each matching entry according to the \u003Ccode>display\u003C\u002Fcode> string you provide. The \u003Ccode>target\u003C\u002Fcode> attribute defines which forms to query: pass \u003Ccode>0\u003C\u002Fcode> to search all forms, a single form ID to target one form, or a comma-separated list of IDs for multi-form searches. The \u003Ccode>search\u003C\u002Fcode> attribute specifies the field IDs and entry properties to filter on, and the shortcode content supplies the corresponding values, separated by the pipe (\u003Ccode>|\u003C\u002Fcode>) character in the same order.\u003C\u002Fp>\n\u003Cp>You can configure the \u003Ccode>search_mode\u003C\u002Fcode> attribute to determine matching logic. The default mode (\u003Ccode>all\u003C\u002Fcode>) requires each entry to satisfy all conditions, while \u003Ccode>search_mode=\\\"any\\\"\u003C\u002Fcode> returns entries that meet at least one of the conditions listed. This gives you the flexibility to build both strict, multi-field filters and more permissive, keyword-style searches. If you need to perform a global search across all fields for a given value, you can leave the relevant search ID blank, and the plugin will look for that value anywhere in the entry.\u003C\u002Fp>\n\u003Cp>Sorting, limiting, and uniqueness are handled after the search conditions are applied. You can specify a \u003Ccode>sort_key\u003C\u002Fcode> (field ID, entry property, or meta key) with \u003Ccode>sort_direction\u003C\u002Fcode> set to \u003Ccode>ASC\u003C\u002Fcode>, \u003Ccode>DESC\u003C\u002Fcode>, or \u003Ccode>RAND\u003C\u002Fcode>. If you are sorting by numeric data, \u003Ccode>sort_is_num\u003C\u002Fcode> ensures values are compared correctly rather than as plain strings. When you need a consistent secondary ordering—such as sorting first by date and then by name—you can use \u003Ccode>secondary_sort_key\u003C\u002Fcode> and \u003Ccode>secondary_sort_direction\u003C\u002Fcode>. Once ordered, the plugin applies the \u003Ccode>limit\u003C\u002Fcode> attribute to control how many entries are actually returned and optionally filters down to unique results based on the full rendered output when \u003Ccode>unique\u003C\u002Fcode> is enabled.\u003C\u002Fp>\n\u003Cp>Defaults and fallbacks keep your front-end output robust. The \u003Ccode>default\u003C\u002Fcode> attribute can define text to display when no entries are found or when specific fields are empty, and the plugin can handle multiple default values mapped to multiple display fields. The \u003Ccode>separator\u003C\u002Fcode> attribute governs how multiple entries are joined, making it easy to build line-separated lists, HTML \u003Ccode>elements, or table rows. Because each [gravops_search]\u003C\u002Fcode> shortcode runs its own live database query, you can place different instances around your site to build different views of the same underlying Gravity Forms data.\u003C\u002Fp>\n\u003Ch3>Display and Formatting\u003C\u002Fh3>\n\u003Cp>The \u003Ccode>display\u003C\u002Fcode> attribute is the heart of how results are shown. In its simplest form, you can pass a comma-separated list of field IDs or entry properties, such as \u003Ccode>display=\\\"13,14,15\\\"\u003C\u002Fcode>. For each matching entry, GravityOps Search outputs those values in order, using sensible default separators between fields and entries. This mode is ideal when you simply need to surface raw values: a quick list of email addresses, a set of IDs, or basic single-column output.\u003C\u002Fp>\n\u003Cp>For more control, \u003Ccode>display\u003C\u002Fcode> supports custom display strings with placeholders. Instead of a list of IDs, you can provide a template like \u003Ccode>display=\\\"Name: {13}, Email: {14}\\\"\u003C\u002Fcode>, which will be rendered for each matching entry. Placeholders like \u003Ccode>{13}\u003C\u002Fcode> insert the value of field 13, while placeholders such as \u003Ccode>{id}\u003C\u002Fcode> and \u003Ccode>{form_id}\u003C\u002Fcode> work with entry properties. When you need to reference non-numeric properties or use merge tags in contexts that parse standard tags (such as GravityView content fields, confirmations, or notifications), you can use the special \u003Ccode>{gos:id}\u003C\u002Fcode> syntax. This gives you a consistent way to assemble complex messages, labels, and markup that incorporate both field data and meta data.\u003C\u002Fp>\n\u003Cp>The \u003Ccode>display\u003C\u002Fcode> attribute also accepts full HTML, including tags, attributes, and CSS classes. You can wrap values in \u003Ccode>,\u003C\u002Fcode>, \u003Ccode>,\u003C\u002Fcode>, “, or any other markup to build lists, tables, cards, or media objects. Because the \u003Ccode>separator\u003C\u002Fcode> attribute supports HTML as well, you can structure your markup so that each entry becomes one list item, table row, or card component. This makes it straightforward to integrate entry results into existing sections of your design, matching your theme and layout without a custom PHP query.\u003C\u002Fp>\n\u003Ch3>Nesting Shortcodes and Advanced Templates\u003C\u002Fh3>\n\u003Cp>GravityOps Search supports nesting other shortcodes inside the \u003Ccode>display\u003C\u002Fcode> attribute via a double-curly-brace syntax: \u003Ccode>{{ ... }}\u003C\u002Fcode>. This means you can embed tools like GravityMath, another \u003Ccode>gravops_search\u003C\u002Fcode>, or any other shortcode directly inside the output template for each entry. The outer \u003Ccode>[gravops_search]\u003C\u002Fcode> processes its own placeholders first and then hands the rendered string to the nested shortcodes, allowing you to feed entry values into calculations, secondary lookups, or formatting helpers.\u003C\u002Fp>\n\u003Cp>When you nest a second \u003Ccode>gravops_search\u003C\u002Fcode> inside the \u003Ccode>display\u003C\u002Fcode> attribute, each shortcode runs its own search and display logic in sequence. The outer shortcode resolves placeholders such as \u003Ccode>{13}\u003C\u002Fcode> and \u003Ccode>{gos:id}\u003C\u002Fcode> in its \u003Ccode>display\u003C\u002Fcode> string, while the nested shortcode uses its own \u003Ccode>display\u003C\u002Fcode> template and attributes. In nested scenarios where you need to reference placeholder values as input to another shortcode or formula, you can use the \u003Ccode>gos:id\u003C\u002Fcode> pattern without braces (for example, \u003Ccode>gos:21\u003C\u002Fcode>) to avoid conflicts with merge-tag parsing. This lets you do things like passing a field value into a GravityMath filter or dynamically controlling filters and IDs inside the nested shortcode configuration.\u003C\u002Fp>\n\u003Cp>Because nested shortcodes are fully supported and the plugin respects all standard shortcode attributes, you can construct sophisticated, layered outputs without custom PHP. For example, you can build a front-end summary that uses one \u003Ccode>[gravops_search]\u003C\u002Fcode> to list matching entries, another to pull related entries, and a GravityMath shortcode to compute totals—all wrapped in your own HTML structure. GravityOps Search handles placeholder substitution and nested processing order so that each piece of your template receives the data it needs at the right time.\u003C\u002Fp>\n\u003Ch3>Search Operators and Multi-Input Fields\u003C\u002Fh3>\n\u003Cp>The \u003Ccode>operators\u003C\u002Fcode> attribute lets you tell GravityOps Search exactly how to compare each search value against its corresponding field or property. You define a comma-separated list of operators that line up with the IDs in the \u003Ccode>search\u003C\u002Fcode> attribute. Supported operators include equality (\u003Ccode>=\u003C\u002Fcode> or \u003Ccode>is\u003C\u002Fcode>), inequality (\u003Ccode>!=\u003C\u002Fcode>, \u003Ccode>isnot\u003C\u002Fcode>, \u003Ccode>is not\u003C\u002Fcode>), partial matches (\u003Ccode>contains\u003C\u002Fcode>), SQL-style wildcard matches (\u003Ccode>like\u003C\u002Fcode>), membership tests (\u003Ccode>in\u003C\u002Fcode>, \u003Ccode>not in\u003C\u002Fcode>), and numeric comparisons (\u003Ccode>gt\u003C\u002Fcode>, \u003Ccode>lt\u003C\u002Fcode>, \u003Ccode>gt=\u003C\u002Fcode>, \u003Ccode>lt=\u003C\u002Fcode>). If you provide fewer operators than search fields, remaining fields default to exact matches; extra operators beyond the number of fields are ignored. When you omit \u003Ccode>operators\u003C\u002Fcode> entirely, all fields use exact matching by default.\u003C\u002Fp>\n\u003Cp>For more advanced scenarios, certain operators expect specific value formats. When using \u003Ccode>in\u003C\u002Fcode> or \u003Ccode>not in\u003C\u002Fcode>, for example, you can pass a PHP-style array in the shortcode content—such as \u003Ccode>array(\\'item one\\',\\'item two\\',\\'item three\\')\u003C\u002Fcode>—to test whether the field value appears in that list. This makes it easy to filter entries against multiple acceptable values for a single field without duplicating field IDs. Combined with \u003Ccode>search_mode\u003C\u002Fcode>, you can express a wide range of conditions: from strict multi-field comparisons to flexible multi-value lists and keyword-style filters.\u003C\u002Fp>\n\u003Cp>Multi-input Gravity Forms fields (like Name, Address, and Checkbox fields) are fully supported, but they behave differently for display versus search. When displaying, using the base field ID in a placeholder (e.g., \u003Ccode>{13}\u003C\u002Fcode>) automatically combines all sub-inputs (such as first name and last name) into a single string separated by spaces. If you need to display a specific sub-input—like first name only—you can use its input ID directly, for example \u003Ccode>{13.3}\u003C\u002Fcode>. When searching, checkboxes are best handled by searching the base field ID so that changes to individual options or dynamic checkboxes do not break the search. Other multi-input fields (like Name and Address) should be searched using their individual input IDs (e.g., \u003Ccode>13.3\u003C\u002Fcode>, \u003Ccode>13.6\u003C\u002Fcode>), as searching by the base ID will not work for those types.\u003C\u002Fp>\n\u003Ch3>Performance and Access Control\u003C\u002Fh3>\n\u003Cp>Every \u003Ccode>[gravops_search]\u003C\u002Fcode> shortcode runs a live database query against Gravity Forms entries, so thoughtful usage is important for both performance and privacy. On the performance side, heavy use of \u003Ccode>limit=\\\"all\\\"\u003C\u002Fcode>, many nested shortcodes, and large forms with complex conditions can slow down page loads. To keep pages responsive, it is recommended to set a reasonable \u003Ccode>limit\u003C\u002Fcode> where possible, minimize unnecessary nesting, and consider caching the rendered page output using your preferred caching plugin or server-level caching tools. These simple steps help ensure that even data-heavy views remain fast and reliable.\u003C\u002Fp>\n\u003Cp>On the access-control side, the shortcode does not enforce any special permission checks by itself. Anyone who can view the page where the shortcode is placed will be able to see whatever Gravity Forms entry data you choose to display, including potentially sensitive information. To protect private or restricted data, you should place the shortcode inside pages or templates that are protected by membership plugins, password protection, role-based visibility, or other gating mechanisms. This keeps the plugin flexible and focused on data retrieval and formatting, while allowing you to decide how and where to expose entry data based on your site’s security model.\u003C\u002Fp>\n\u003Cp>GravityOps Search is designed to be both powerful and predictable: you define the forms, fields, filters, and display template, and the plugin takes care of querying and rendering. Used thoughtfully, it becomes a core tool for building dynamic, entry-driven front-end experiences on top of Gravity Forms, without custom development or complex integrations.\u003C\u002Fp>\n","Search Gravity Forms entries on the front end and display matching results anywhere. Filter by any field value. Output custom formatted data.",485,"6.5","8.0",[110,111,112,22,113],"display-form-entries","form-data-lookup","frontend-entry-search","shortcode-results-display","https:\u002F\u002Fbrightleafdigital.io\u002Fgravityops-search\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgravityops-search.1.0.6.1.zip","2026-03-15T10:48:56.248Z",{"slug":118,"name":119,"version":120,"author":121,"author_profile":122,"description":123,"short_description":124,"active_installs":125,"downloaded":126,"rating":127,"num_ratings":128,"last_updated":129,"tested_up_to":49,"requires_at_least":130,"requires_php":131,"tags":132,"homepage":137,"download_link":138,"security_score":13,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"gravity-forms-zero-spam","Gravity Forms Zero Spam","1.7.2","GravityKit","https:\u002F\u002Fprofiles.wordpress.org\u002Fgravityview\u002F","\u003Cp>This Gravity Forms add-on blocks spam using a non-obtrusive anti-spam measure and can email a spam report summary.\u003C\u002Fp>\n\u003Ch3>Spam blocking for Gravity Forms\u003C\u002Fh3>\n\u003Cp>To get started, all you need to do is activate the plugin!\u003C\u002Fp>\n\u003Ch3>Is the Gravity Forms honeypot field not working for you? 🍯 🐝\u003C\u002Fh3>\n\u003Cp>Zero Spam is better than the Gravity Forms anti-spam honeypot field. If you’re getting spammed, try this plugin.\u003C\u002Fp>\n\u003Ch3>Use this plugin instead of reCaptcha\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>reCaptcha is user-hostile!\u003C\u002Fstrong> Use this instead! Users don’t need to click stoplights, crosswalks, or bicycles when you use this plugin to stop spam.\u003C\u002Fp>\n\u003Ch3>Enable or disable filtering per form\u003C\u002Fh3>\n\u003Cp>If you only want the plugin for specific forms, that’s possible! The plugin adds a simple “Prevent spam using Gravity Forms Zero Spam” setting to each form (requires Gravity Forms 2.5 or newer).\u003C\u002Fp>\n\u003Ch3>Spam report emails\u003C\u002Fh3>\n\u003Cp>Spam summary report emails are disabled by default. Once enabled, a spam summary that includes the number of entries per-form will be sent via email.\u003C\u002Fp>\n\u003Cp>Choose whether you want to be notified after the number of entries reaches a threshold (e.g. 10 spam entries) or after a certain number of days (e.g. every week). If there are no spam entries, no report will be sent.\u003C\u002Fp>\n\u003Cp>Requires \u003Ca href=\"https:\u002F\u002Fwww.gravityforms.com\u002F?partner_id=1210629&irgwc=1&utm_medium=affiliate&utm_campaign=1210629&utm_source=Katz%20Web%20Services%2C%20Inc.\" rel=\"nofollow ugc\">Gravity Forms\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cem>Brought to you by \u003Ca href=\"https:\u002F\u002Fwww.gravitykit.com?utm_source=plugin&utm_campaign=zero-spam&utm_content=readme\" rel=\"nofollow ugc\">GravityKit\u003C\u002Fa>. We create essential Gravity Forms Add-Ons.\u003C\u002Fem>\u003C\u002Fp>\n","Enhance your Gravity Forms to include anti-spam measures originally based on the work of David Walsh's \"Zero Spam\" technique.",100000,1048908,86,23,"2026-03-12T14:21:00.000Z","4.7","7.4",[133,134,22,135,136],"anti-spam","captcha","honeypot","spam","https:\u002F\u002Fwww.gravitykit.com?utm_source=plugin&utm_campaign=zero-spam&utm_content=pluginuri","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgravity-forms-zero-spam.1.7.2.zip",{"attackSurface":140,"codeSignals":172,"taintFlows":185,"riskAssessment":186,"analyzedAt":196},{"hooks":141,"ajaxHandlers":163,"restRoutes":164,"shortcodes":165,"cronEvents":166,"entryPointCount":26,"unprotectedCount":26},[142,148,153,157],{"type":143,"name":144,"callback":145,"file":146,"line":147},"filter","cron_schedules","add_cron_schedule","class-gf-entryexpiration.php",160,{"type":149,"name":150,"callback":151,"file":146,"line":152},"action","gf_entryexpiration_maybe_expire","maybe_run_expiration",173,{"type":149,"name":154,"callback":155,"file":146,"line":156},"admin_init","maybe_display_upgrade_message",175,{"type":149,"name":158,"callback":159,"priority":160,"file":161,"line":162},"gform_loaded","load",5,"entryexpiration.php",15,[],[],[],[167,169],{"hook":150,"callback":150,"file":146,"line":168},170,{"hook":170,"callback":170,"file":146,"line":171},"gf_entryexpiration_delete_old_entries",788,{"dangerousFunctions":173,"sqlUsage":174,"outputEscaping":176,"fileOperations":26,"externalRequests":26,"nonceChecks":26,"capabilityChecks":26,"bundledLibraries":184},[],{"prepared":26,"raw":26,"locations":175},[],{"escaped":26,"rawEcho":177,"locations":178},2,[179,182],{"file":146,"line":180,"context":181},419,"raw output",{"file":146,"line":183,"context":181},458,[],[],{"summary":187,"deductions":188},"The \"gravity-forms-entry-expiration\" plugin version 2.2.1 presents a generally positive security posture based on the provided static analysis. There are no identified AJAX handlers, REST API routes, or shortcodes, which significantly limits the potential attack surface. The use of prepared statements for all SQL queries is a strong security practice, indicating that direct SQL injection vulnerabilities are unlikely.\n\nHowever, a significant concern arises from the lack of output escaping for all identified output points. This means that any data rendered to the user interface that originates from or is influenced by plugin logic could potentially be vulnerable to Cross-Site Scripting (XSS) attacks. The absence of nonce checks and capability checks, especially in conjunction with cron events, also warrants caution, as these could be exploited if the cron events are triggered by unauthenticated or unauthorized users under specific circumstances. The plugin's history of zero known CVEs is encouraging, suggesting a track record of security awareness, but it doesn't negate the risks identified in the current static analysis.\n\nIn conclusion, while the plugin avoids common vulnerabilities like direct SQL injection and has no prior exploit history, the complete lack of output escaping is a critical weakness that exposes users to XSS risks. The limited attack surface is a strength, but the absence of authentication checks on certain entry points needs careful consideration. Prioritizing the implementation of proper output escaping should be the immediate focus for improving the plugin's security.",[189,192,194],{"reason":190,"points":191},"Output escaping missing on all outputs",6,{"reason":193,"points":14},"No nonce checks implemented",{"reason":195,"points":14},"No capability checks implemented","2026-03-16T18:43:07.016Z",{"wat":198,"direct":209},{"assetPaths":199,"generatorPatterns":202,"scriptPaths":203,"versionParams":206},[200,201],"\u002Fwp-content\u002Fplugins\u002Fgravity-forms-entry-expiration\u002Fjs\u002Fgf-entryexpiration.js","\u002Fwp-content\u002Fplugins\u002Fgravity-forms-entry-expiration\u002Fcss\u002Fgf-entryexpiration.css",[],[204,205],"js\u002Fgf-entryexpiration.js","css\u002Fgf-entryexpiration.css",[207,208],"gravity-forms-entry-expiration\u002Fjs\u002Fgf-entryexpiration.js?ver=","gravity-forms-entry-expiration\u002Fcss\u002Fgf-entryexpiration.css?ver=",{"cssClasses":210,"htmlComments":211,"htmlAttributes":212,"restEndpoints":213,"jsGlobals":214,"shortcodeOutput":215},[],[],[],[],[],[]]