SearchWP News

Category: Releases

SearchWP version 2.8.8 is now available to all active license holders. It is a recommended update with a number of bug fixes and some other improvements that will positively affect how SearchWP runs for you.

Full changelog:

  • [New] New filter searchwp_pre_set_post allowing for filtration of each post object prior to indexing
  • [Fix] Better interoperation with Widgets
  • [Fix] Prevent double search logs in certain cases
  • [Fix] Properly cancel native search SQL when performing admin search (props Jim)
  • [Fix] Repaired application of ‘Remove all traces’ feature on Advanced settings page
  • [Fix] Fixed an issue where incorrect total results counts were logged
  • [Improvement] PHP Warning cleanup
  • [Improvement] Better accommodation for customization during import routines
  • [Improvement] Better accommodation of engine configuration and exclusions when performing AND logic pass
  • [Change] Update to SWP_Query: post__in and post__not_in parameters are now explicit (previously behaved like hooks)
  • [Update] Updated updater

Version 2.8.7 Now Available

February 14, 2017 in

SearchWP version 2.8.7 is now available to all active license holders with a few quick fixes, improvements, and an improved updater library. Full changelog:


  • [Fix] Fixed missing tooltip content
  • [Improvement] Using searchwp_admin_bar now applies to search modification notices
  • [Improvement] License key now included in System Information
  • [New] Taxonomy term slugs are now indexed (use searchwp_indexer_taxonomy_term_index_slug to disable)
  • [New] New filter searchwp_indexer_taxonomy_term allowing for filtration on taxonomy terms prior to indexing
  • [Update] Updated updater

This update is recommended for all active license holders, have a great day!

SearchWP version 2.8.6 is now available for all active license holders. This is a bug fix and maintenance release and is recommended for all SearchWP customers. Version 2.8.6 was quickly released after version 2.8.5 to fix a bug with empty searches.

Full changelogs:


  • [Fix] Fixed an issue with imposed engine config implementation for empty searches


  • [New] Engine settings (e.g. exclusions/inclusions) are now imposed for empty searches
  • [New] New filter searchwp_disable_impose_engine_config to disable imposed engine settings for empty searches
  • [Fix] Fixed an issue that may have triggered unnecessary index update requests
  • [Improvement] Style updates to better match WordPress’ implementation of system font
  • [Improvement] Better handling of indexer requests
  • [Improvement] Better support when Admin/Dashboard searches are enabled
  • [Improvement] Better utilization of existing extracted document content when triggering an index rebuild
  • [Improvement] Better feedback when document parsing dependencies are not available
  • [Update] Added more file type limiters to engine settings
  • [Update] Updated translation sources
  • [Update] Updated updater

Version 2.8.4 primarily fixes an issue with admin-enabled searching. This update is available to all active license holders.

Full changelog:

  • [New] New filter searchwp_indexer_comment to filter comment arguments during indexing
  • [New] New filter searchwp_indexer_pre_get_comments to filter comment arguments during indexing
  • [New] New filter searchwp_indexer_comments_args to filter comment arguments during indexing
  • [Fix] Fixed an issue that prevented searching in the WordPress admin (when enabled)

SearchWP version 2.8.3 is now available to all active license holders. This a bugfix and maintenance release that is recommended for everyone. Here’s the full changelog:

  • [New] New filter searchwp_search_args to filter search arguments at runtime
  • [Improvement] Better handling of object caching
  • [Improvement] Better messaging when rebuilding index
  • [Improvement] Dequeue/deregister legacy versions of select2 that are imposed upon SearchWP’s settings screen
  • [Improvement] Better handling of regex matches
  • [Fix] Fixed an issue that sometimes prevented the indexer progress bar from displaying after rebuilding index
  • [Fix] Fixed an issue that may have prevented manually edited document content from being fully re-indexed
  • [Fix] Fixed PHP Warning during short circuit check
  • [Fix] Disabling the minimum character count reduces length to 1 instead of 2

SearchWP version 2.8.2 has just been released for all active license holders. This is a bug fix and maintenance release that’s recommended for everyone.

Full changelog:

  • [Fix] Fixed a mime type mismatch that prevented accurate Media limiting using All Documents file type
  • [Fix] Admin Bar and Advanced tab indexer pausing now use the same setting
  • [Fix] Fixed an issue when checking for utf8mb4 support
  • [Improvement] Improved regex pattern for hyphen-separated matches
  • [Improvement] Improved aggressiveness of search algorithm where necessary to prevent unexpected filtration during searches
  • [Update] Updated updater


SearchWP version 2.8 was just released for all active license holders! Version 2.8 focused on two things:

  1. Improving document support
  2. Improving the settings screen

There were also some other smaller bug fixes as well.

Improved document processing

Since day one SearchWP supported the extraction and indexing of PDF and plain text content. Version 2.8 broadens document support to include:

  • Plain text
  • CSV
  • Rich text (RTF)
  • PDFs (that have readable text*)
  • Office Documents (.docx, .xlsx, .pptx, NOT.doc)
  • OpenOffice Documents (.odt, .ods, .odp)

Supporting Office documents was an often requested feature, so I’m really happy it’s now available. Along with this feature update comes improved documentation for the feature as a whole in the form of a few new KB articles:

Document Processing in SearchWP — Find out in detail how document processing is implemented and how you can take advantage of it.

Customizing parsed content — You have complete control over parsed document content, and you can customize it if you’d like.

Linking to file instead of Attachment page — Many theme’s do not account for Attachment templates, and it often makes sense to link directly to the file as a result.

Attributing Post Parent — SearchWP allows you to attribute keyword weight to the post parent, which is very useful when handling documents in search results.

“SearchWP Failed to Index X Posts” — SearchWP’s document processing can sometimes cause a post to fail to index. Find out common causes and fixes in this KB article.

Along with additional document types, SearchWP’s handling of larger documents has been improved as well. Document processing has proven to be a very important feature of SearchWP and I’m happy to have improved support in version 2.8!

Improved settings screen

The settings screen for SearchWP is one of it’s most powerful features. The goal is to make it as usable as possible for everyone. Until version 2.8 the Advanced tab was severely lacking, somewhat by design. I’ve always tried to avoid adding interface elements unless completely necessary and in version 2.8 it was time to make a few changes.

The Advanced tab of the SearchWP settings screen now makes it easier to utilize common actions and toggle often used settings:


The Actions meta box now contains the most common operations you may need to take when working with SearchWP. The Settings meta box includes the most commonly used settings after analyzing a few years worth of support tickets. These Settings do nothing more than provide a UI for their equivalent Hook, but adding them here should make it much easier for you to work with.

New documentation for Settings has also been added.

Other improvements

The translation source has been updated, so if you’re able to provide a translation please don’t hesitate to contact me please! Other optimizations on the Settings screen have been implemented such as offloading taxonomy exclusion requests to be processed in real time (instead of loaded with the Settings screen itself) and admin searches are now properly working for Media within Grid view.

Full changelog for version 2.8:

  • [New] Document parsing support added for Office documents (.docx, .xlsx, .pptx)
  • [New] Document parsing support added for OpenOffice/LibreOffice documents (.odt, .ods, .odp)
  • [New] Document parsing support added for Rich Text documents
  • [New] Settings screen update to better accommodate common actions
  • [New] Improve settings screen performance by requesting taxonomy terms via AJAX
  • [Fix] When searchwp_in_admin is enabled searching in Grid view for Media now works as expected
  • [Improvement] Better handling of large content (including parsed documents)
  • [Update] Updated translation source
  • [Update] Updated select2

Version 2.7 now available

January 19, 2016 in

SearchWP version 2.7 is now available for all active license holders. It is a recommended upgrade that brings improvements in a number of areas. A couple of my favorite updates include:

A new filter searchwp_weight_mods that allows you to inject your own real-time weight modifications to the search algorithm. Now if you want to have more recent publish dates add more weight to results you can do it! In fact a new KB article has been posted showing you just how to do that:

Another nice update is how SearchWP handles keyword stemming. Out of the box SearchWP only supports keyword stemming, but until version 2.7 the checkbox to enable stemming was always visible on the settings screen. In many foreign languages the feature simply didn’t work as expected. As of version 2.7, SearchWP now checks for stemming support as per the locale of your WordPress install, and if it doesn’t find one the checkbox is omitted. There is a growing library of stemmer extensions available, and if stemming is not available in your language please let me know! If you’ve built your own stemmer please have a look at the docs for searchwp_keyword_stem_locale.

Regex whitelist matching has been improved, accented characters are better handled, and other small improvements around out the updates in this release. I hope you enjoy SearchWP!

Full changelog:

  • [New] New filter searchwp_weight_mods allowing for direct manipulation of computed weights within the search algorithm
  • [New] New filter searchwp_license_key to programmatically define SearchWP license key
  • [New] SearchWP license key can now be defined with SEARCHWP_LICENSE_KEY constant
  • [New] New filter searchwp_initial_engine_settings to programmatically define default engine configurations on activation
  • [New] New filter searchwp_keyword_stem_locale to enable keyword stemming in the current locale
  • [New] Support for 'fields' => 'ids' argument in SWP_Query
  • [New] Support for post_type argument in SWP_Query
  • [New] New filter searchwp_purge_pdf_content to remove parsed PDF content during an index purge
  • [New] New filter searchwp_skip_vendor_libs to prevent loading of any vendor libraries
  • [New] New filter searchwp_indexer_taxonomy_terms allowing for filtration of taxonomy terms pre-index
  • [Fix] Fixed an issue where searchwp_exclusive_regex_matches could have been too greedy
  • [Fix] Fixed an issue where a filtered post type could not be enabled in engine settings
  • [Fix] Use multibyte string manipulation when possible
  • [Fix] PHP Warning cleanup
  • [Fix] Fixed an issue where the indexer progress bar may not display in WordPress 4.4+
  • [Improvement] Better handling of matches when taking advantage of searchwp_exclusive_regex_matches
  • [Improvement] Improved handling of deeply serialized meta data
  • [Improvement] Reduced indexer query overhead
  • [Improvement] Keyword stemming is only available if the current locale supports it (if you are using a custom stemmer you will need to update)
  • [Improvement] Less aggressive checks against failed PDF parsing that generated false positive results
  • [Improvement] Better handling of unicode whitespace during PDF parsing
  • [Change] Debug log is now written to searchwp-debug.txt in the base uploads directory
  • [Change] Parsed PDF content is not removed when the index is purged
  • [Update] Updated PDF parsing library
  • [Update] Updated updater

Version 2.6.1 has just been released and is a recommended update for all active license holders. Full changelog:


  • [Fix] Fixed an issue where AND logic may not be enforced in some circumstances
  • [Fix] PDF metadata is now properly delted when Nuke on Delete is enabled
  • [Fix] Fixed an issue in the tokenizer that may have prevented tokens from being broken apart when HTML had no whitespace
  • [Fix] Fixed a potential issue with PDF content indexing
  • [Fix] Fixed an issue with the indexer not fully completing when only Media was enabled
  • [Fix] PHP Warning cleanup when no results were found after tokenizing
  • [Improvement] Improved performance when Media is given parent attribution
  • [Improvement] SearchWP will now internally short circut when an empty search is performed for the main query
  • [Improvement] Filtered post types are now given priority on the settings screen
  • [New] Added Dutch translation

Version 2.6 of SearchWP is now available for all active license holders. You will see an update notification in your WordPress admin area, and the latest version is always available as a direct download from your Account. On to the wonderful release details!

Settings interface improvements

SearchWP got a bit of a facelift in the settings department. I’ve always liked the engine configuration, but the rest needed some work. Everything under the hood that powers the settings was reworked to better accommodate everything as well.


These interface updates were influenced by CalderaWP projects and FacetWP because they’re awesome. The update affords more attention to the Advanced settings area which is becoming more of a utility as SearchWP and the user base matures. The Advanced settings area was also reworked to optimize actions most commonly taken on this screen. It also provides some very high level stats for the indexer that will help provide you details about the status as well as shed more insight should a support ticket need to be opened.


The license management workflow has been completely reworked. When you have an inactive license (as in the screenshot above) the link will be called out in blue, with an active license it takes a step back and looks like the other tabs. The License management itself was redone to better call out the status of your license:


When your license is active, this page now indicates how long the license will remain active as well:


The ‘Support’ button has been reworked as a Help tab, allowing for a more streamlined ticket creation process with an easily accessible viewing of your System Information:


The last interface update was the integration of Extensions that require a settings UI. When one of those extensions is activated a new tab will be added and essentially replicate the dropdown that was present in versions prior to 2.6. Everything else extension-wise works the same on the surface, but an entirely new Settings API was built for extensions to integrate themselves into the settings. If you’d like to find out more about that, please see the Settings API documentation.

Introducing SWP_Query!

Perhaps the thing I am most excited about in SearchWP 2.6 is the introduction of a new class: SWP_Query. This class is something that will be most useful to developers, it aims to recreate as much as it can from WP_Query. WP_Query is essential for development, and many WordPress developers are very familiar with it. SearchWP can work in much the same way as WP_Query, so why not make a class that eases that process for developers? While SWP_Query will never fully replicate WP_Query, the aim is to have it be a utility that WordPress developers can use with as little friction as possible. As of SearchWP 2.6, SWP_Query supports the following arguments:

  • s — the search query
  • engine — the SearchWP engine to use (default: default)
  • posts_per_page — how many posts to return per page (default is the global posts per page defined in Settings > Reading in the WordPress admin)
  • nopaging — disable pagination and return all posts (default: false)
  • load_posts — whether to return post objects (default: true)
  • page — which page of results to return (default: 1)
  • post__in — array of post IDs to limit results to (default: empty array)
  • post__not_in — array of post IDs to exclude from results (default: empty array)
  • tax_query — see WP_Query‘s tax_query documentation
  • meta_query — see WP_Query‘s meta_query documentation
  • date_query — see WP_Query‘s date_query documentation

The introduction of SWP_Query should make the lives of many developers much better. SearchWP tightly integrates with WordPress’ posts table which makes something like this possible. I’m most excited about the tax_query, meta_query, and date_query arguments which will reduce the complexity of making those operations possible. Working with SWP_Query is very similar to using WP_Query:

$swp_query = new SWP_Query(
's' => 'coffee', // search query
'engine' => 'default', // engine to use
'post_type' => array(), // override enabled post types in engine config (SearchWP 2.7+)
'posts_per_page' => 10, // posts per page
'nopaging' => false, // disable paging?
'fields' => 'all', // set to 'ids' to return only post IDs (SearchWP 2.7+)
'page' => 1, // which page of results
'post__in' => array(), // limit potential results pool to array of IDs
'post__not_in' => array(), // explicity exclude IDs from search results
'tax_query' => array( // tax_query support
'taxonomy' => 'people',
'field' => 'slug',
'terms' => 'bob',
'meta_query' => array( // meta_query support
'key' => 'age',
'value' => array( 3, 4 ),
'compare' => 'IN',
'date_query' => array( // date_query support
'year' => 2015,
'month' => 6,
'day' => 1,
view raw gistfile1.php hosted with ❤ by GitHub

In the sample above, $swp_query will have a posts property (just like WP_Query) containing all of the search results. There are some other useful properties returned as well! For more information on SWP_Query please see the documentation.

Index improvements, new hooks, and bugfixes, enjoy!

Version 2.6 brings a reduction in overhead for the index which should improve performance both when indexing and searching. Another bug was fixed that in some cases prevented the indexer from completing when the remaining post(s) had no content to index after the content was tokenized. With all of the updates to the settings, a number of new hooks were added in version 2.6 as well. If you’d like to find out more, they are all documented.

I hope you enjoy SearchWP!

Full changelog:


  • [New] New class: SWP_Query which aims to mirror WP_Query in many ways, but with a SearchWP twist
  • [New] Settings UI has been revamped
  • [New] New filter: searchwp_swp_query_args to filter SWP_Query args at runtime
  • [New] New action: searchwp_settings_init fires when the settings utility has been initialized
  • [New] New action: searchwp_load fires when SearchWP has loaded
  • [New] New action: searchwp_settings_before_header fires before the settings header is output
  • [New] New action: searchwp_settings_nav_tab to implement settings tabs
  • [New] New action: searchwp_settings_after_header fires after the settings header is output
  • [New] New action: searchwp_settings_before\my_view where my_view is the name of the settings view for that tab
  • [New] New action: searchwp_settings_view\my_view where my_view is the name of the settings view for that tab
  • [New] New action: searchwp_settings_after\my_view where my_view is the name of the settings view for that tab
  • [New] New action: searchwp_settings_footer fires after each settings view has been displayed
  • [New] Results weights are included in HTML comment block when debugging is enabled
  • [New] New filter: searchwp_debug_append_weights_to_titles whether weights should be included in HTML comment block debug information
  • [New] New filter: searchwp_show_filter_conflict_notices whether filter conflicts should be shown when debugging is enabled (defaults to false)
  • [Improvement] Better license activation UX
  • [Improvement] Reduction of index overhead by way of pairing to engine settings
  • [Improvement] Refined list of default common (stop) words
  • [Fix] Clear out delta ceiling update check when waking up the indexer
  • [Fix] Fixed an issue that may have caused the indexer to loop when a post has no content to index after tokenizing/processing
  • [Fix] Fixed an issue where the settings screen spinner would not display
  • [Fix] Fixed an issue that prevented loading of some assets if the plugin directory was renamed
  • [Update] Updated translation files
Fix Search on Your Site. No Coding Required!

Now you can utilize all of the content that's gone unrecognized by native WordPress search instantly with SearchWP

Get SearchWP