# Ajax Search Pro Documentation

Documentation for the Ajax Search Pro for WordPress - Live search & Filter  plugin.

This is the official documentation for [Ajax Search Pro - Live search & Filter plugin for WordPress](https://ajaxsearchpro.com/).

{% @mailchimp/mailchimpSubscribe cta="Sign up to our mailing list to receive updates!" %}

{% embed url="<https://youtu.be/qI2_iKK4n_4>" %}

## To Start Off

* [Installation instructions](/installation-instructions)
* [Getting Started](/getting-started)
* [Video Guides](/video-guides)

## Other Useful links

* [Get a copy of Ajax Search Pro here!](https://ajaxsearchpro.com/pricing/)
* [Live demo](https://ajaxsearchpro.com/)
* [Knowledge Base](https://knowledgebase.ajaxsearchpro.com/)
* [Support](https://wp-dreams.com/open-support-ticket-step-1/)

## Author notes

Thank you for buying this plugin, I really appreciate it. I promise, it will serve your site well.

At first you might find the number of options on the back end a bit overwhelming, but fear not, everything is explained in this documentation in details.

I'm expanding and updating this plugin for over 12 years now. Since then, it attracted over 100 000 users. My top priority is the compatibility and security, as well as customer satisfaction. If you experience any issues, feel free to drop me a message [in the support forums.](https://wp-dreams.com/help/)

Best wishes,

Ernest Marcinko,\
Plugin Author


# GDPR and Cookie policy

Please read this section if you have concerns about the GDPR and Cookie usage.

### GDPR

The plugin **does not** collect, store or send any user information whatsoever, therefore it is fully GDPR compliant. If you have any questions or concerns, feel free to contact us via our [support system](https://wp-dreams.com/open-support-ticket-step-1/).

### Cookie usage

#### Front-end cookies

By default configuration the plugin *does not set* any cookies on the site front-end.

However, if the following options are set exactly like on the image below, it may set cookies to store the phrase and the search options on the results page, to memorize them upon pagination. (only the search results listing pages, not on the front page, or any other page anywhere on the site)

The possible cookie names are: *asp\_data, asp\_id, asp\_phrase*

{% hint style="info" %}
Once again, these cookies are not set by the default configuration, and have a functional use only - they are not used for data collection.
{% endhint %}

![Front-end cookie is only set in this case](/files/-LBWs4slo2NY1D8--t-q)

#### Back-end cookies

By default, there is no cookie set on the plugin back-end either.

The only cookie used on the admin area is to memorize if the Accessibility option is enabled. This option can be found on any back-end page on the right sidebar.

![Back-end cookie is set, if the accessibility is enabled](/files/-LBX-Sa5YLEzImDUwd2-)


# Video Guides

These video tutorials will guide you through everything you need to know about Ajax Search Pro for wordpress.

The guides list can be found on [this YouTube playlist](https://www.youtube.com/playlist?list=PLt2qMUJ89DYWvAgY9rXuU_GOucsuAVlZg).

### Getting Started

* [Installation Guide](https://youtu.be/WjmWq9tYBZM)
* [Migrating from Ajax Search Lite to Ajax Search Pro](https://youtu.be/leau_4oAZck)
* [First Steps](https://youtu.be/XVWqsZ4ksD4)
* [Post Type Search (posts, pages, products etc..)](https://youtu.be/UnokRaEFsSE)
* [Searching by Custom Fields (post metadata, ACF, SKU etc..)](https://youtu.be/U9Uc-lfzDZI)
* [Search by Categories](https://youtu.be/raMnRioLJsY)

### Integration

* [Query Loop Search and Filter](https://youtu.be/ZApL7wOoWdM)
* [Divi 5 Loop Builder Search and Filter](https://youtu.be/LDssX3qbcyE)
* [Divi Query Builder Legacy Search and Filter](https://youtu.be/7dWhjxEuSdk)
* [WooCommerce Search](https://youtu.be/EVOBwaecEUM)
* [WooCommerce Shop page live Search and Filter](https://youtu.be/EXWnm171I7g)
* [Elementor integration](https://youtu.be/xPQe2AePosM)
* [Divi Blog module Search and Filter](https://youtu.be/ntE9jQKxRDY)
* [Divi Extras Blog Module Live Search and Filter](https://youtu.be/X1pTWuqsdHg)
* [Bricks Query Loop Live Search and Filter](https://youtu.be/e509gcN3vbU)
* [Jet Listing Grid Integration](https://youtu.be/0cGOQX1Dtbg)
* [GenerateBlocks Query Search and Filter](https://youtu.be/Wtd_Al4CeYE)
* [Elementor Loop Grid/Posts widget as custom results page](https://youtu.be/RTbxpM1af4c)
* [Archive page live Search and Filter](https://youtu.be/EXWnm171I7g)
* [NextGen Gallery Image Search](https://youtu.be/19ibnhu6iqg)
* [Blocksy Advanced Posts Module Live search and Filter](https://youtu.be/5X4uPKPTvU4)

### Advanced Uses

* [Search Statistics](https://youtu.be/ymNY-LoRQZQ)
* [Media Image Results in a Lightbox](https://youtu.be/_t73Ql0K0wg)
* [Predictive  Search Results](https://youtu.be/ZhUc4hsUHFQ)
* [Advanced title and content fields](https://youtu.be/CSL7HN337j8)
* [Compact Search Box](https://www.youtube.com/watch?v=lZwfoulO7y0\&list=PLt2qMUJ89DYWvAgY9rXuU_GOucsuAVlZg\&index=3)
* [Category and Taxonomy Term Filters](https://www.youtube.com/watch?v=LY-zlvbtP-U\&list=PLt2qMUJ89DYWvAgY9rXuU_GOucsuAVlZg\&index=4)
* [Custom field (post meta) filters](https://www.youtube.com/watch?v=EG4JJbdDzbA\&list=PLt2qMUJ89DYWvAgY9rXuU_GOucsuAVlZg\&index=5)

### Index Table

* [Index table Basic options & test setup](https://www.youtube.com/watch?v=ZgjcYkx7jtk)
* [Index Table Advanced options](https://www.youtube.com/watch?v=TnAD_A7U0S4)
* [File Content Search](https://youtu.be/NV8x2XhU_Vo)


# Plugin Updates

The plugin is updated on a regular basis and has a built in update-notification system.

{% hint style="info" %}
License activation is **not required** for the plugin to work - it does not limit the plugin functionality in any way. It is **only used for the automatic updates** script for verification.
{% endhint %}

* [Automatic Updates](/plugin-updates/automatic-updates)
* [Manual Updates](/plugin-updates/manual-updates)
* [Safe update guide](/plugin-updates/safe-update-guide) - in case you are having issues
* [Version Log](https://changelog.ajaxsearchpro.com/)


# Automatic Updates

To enable automatic updates you will need your purchase license key first. [How to get my license key?](/plugin-updates/automatic-updates/purchase-code)

Automatic updates are supported purchase key per site basis  - meaning that one purchase key can be activated only on one site at the same time. If you have a development/staging/live environment setup, check the [activation information for development and staging environments](/plugin-updates/automatic-updates/activation-on-development-and-staging-environments) to understand how it works.

{% hint style="info" %}
License activation is **not required** for the plugin to work - it does not limit the plugin functionality in any way. It is **only used for the automatic updates** script for verification.
{% endhint %}

## Activating for current site

Open up the `Help & Updates` sub-menu under the Ajax Search Pro plugin menu.

![](http://i.imgur.com/5NfUSt9.png)

Enter your purchase code to the `Purchase code` field and hit the `Activate for this site`button.

![Enter your purchase code](/files/-LWWPAqkkHky__Lk-O0d)

{% hint style="info" %}
Where can I find my purchase code? [Read here.](/plugin-updates/automatic-updates/purchase-code)
{% endhint %}

The page should re-fresh with a notification message, that the activation was successful.&#x20;

![](http://i.imgur.com/SjUdgIM.png)

## Trigger automatic update

### Updating via the plugin manager

In WordPress the plugin updates have to be triggered every time. Whenever an update is available, the plugin manager will notify you. Then you can simply update the plugin by clicking on the 'update now' link:

![](http://i.imgur.com/pUXrx72.png)

### Updating via the update panel

If the above method does not work, then you can still try updating via the **Dashboard** -> **Updates** menu.

* Click on the **Dashboard -> Updates** menu
* Scroll down to the **Plugins** list. If you don't see "Ajax Search Pro" there, try refreshing the page a few times.
* Tick the **checkbox** by Ajax Search Pro
* Hit the **Update Plugins** button

![](/files/XcYu9N6v1tMKaDIwt8jF)

## Deactivating automatic updates

To deactivate the purchase key on the current site, simply hit the Deactivate button.

![Deactivating from the currently active site](/files/-LR6U4MPmBA_elvph-ig)


# Activation on Development and Staging environments

{% hint style="info" %}
License activation is **not required** for the plugin to work - it does not limit the plugin functionality in any way. It is **only used for the automatic updates** script for verification.
{% endhint %}

The updater script in some cases allows simultanious activation of the license code on development and staging environments. This is possible, if:

* the sites reside on the same IP address
* the development or staging site is on one the following subdomains: **dev., staging., members., test., ww1, ww2, 1., 2.**

For example, if you main site URL is **yoursite.com**, then **dev.yoursite.com**, **staging.yoursite.com**, **test.yoursite.com** etc.. should be allowed to register the same purchase code.

### I can not activate on the staging or development or live site simultaniously, what should I do? Which should I activate?

In that case, you can still use [manual updates](/plugin-updates/manual-updates).&#x20;

If the development or staging sites are deployed to the live environment, then it is sufficient to enable the automatic updates only on the one, that is directly deployed to the live environment - if the deployment process overwrites the files and the database as well.


# Managing purchase codes

Viewing and remotely deactivating auto-updates

In case you have more than one purchase code, it is convenient to have a place where you can see which one is activated on which website.

To do that, you will need to [login or register an account](https://wp-dreams.com/login/) on our support website, then add the purchase codes to the account.

### Managing your license codes

* Go to the support system and register or log-in to your existing account [via this link](https://wp-dreams.com/login/)
* After logging in click the `Your Purchases` button\
  ![](/files/FJRjOkBE6ErKMeAVvK7K)
* Using the `Register a License` form register your license keys\
  ![](/files/fKvzKpgO1VRFSLEI2In2)
* After registering the product license information will be updated and listed below the form, including all the details\
  ![](/files/AuDXRqeYHbW2hiLmFTWZ)

### Deactivating the purchase code remotely

In case the purchase code was ever activated on a website, the row "Last activated on" is printed. If the license code is active a button is also displayed so you can instantly deactivate it remotely.

<figure><img src="/files/RbOIgca0lp0vAUiwKYAy" alt=""><figcaption></figcaption></figure>

<br>


# Purchase Code (license key)

This section will guide you to find your purchase code aka the license keys.

### Jump to section

* [Direct purchases via ajaxsearchpro.com](#purchase-code-for-direct-purchases)
* [Purchases via Envato Market (codecanyon.net)](#purchase-code-from-codecanyon.net-purchases)

## Purchase code for direct purchases

This section is for users that purchased the product directly from ajaxsearchpro.com (via paddle).

## Step 1. - Log in to wp-dreams.com

{% hint style="info" %}
After purchase, you got an email with log-in details, where you can view all your purchases. If you don't find the email or deleted it - don't worry, all you need is the email address you used with the purchase.
{% endhint %}

Use [this link to log-in](https://wp-dreams.com/login/) to wp-dreams.com. Use the email address with your purchase - the password was mailed to you during purchase. If you forgot or lost it, use the *Forgot your password?* link to reset it.

<figure><img src="/files/TVDSccUZr2a2sngvkEkP" alt="" width="563"><figcaption><p>Log in to wp-dreams.com</p></figcaption></figure>

If you forgot your password, just use the *Forgot your password?* link.

<figure><img src="/files/zWnJgSpLwS7XVu5BB0jF" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="/files/gTw9o2FNkTcmlm896Dc0" alt="" width="375"><figcaption></figcaption></figure>

### Step 2. - Navigate to Your Purchases

After a successful log-in, click on the *Your Purchases* button in the top navigation bar.

<figure><img src="/files/MN5w6f0d0qCwDZPUOjaj" alt="" width="563"><figcaption></figcaption></figure>

A list of your license codes will be displayed.

<figure><img src="/files/9abGLmixjKEcNY8SuahH" alt="" width="563"><figcaption></figcaption></figure>

That's it, enjoy :)

## Purchase code from codecanyon.net purchases

This section is for users that purchased via codecanyon.net (Envato Market)

### Step 1. - Log in to codecanyon

To download the required documents, go to your [codecanyon downloads](https://codecanyon.net/downloads) page. Make sure you are logged in.

### Step 2. - Download the license file

Download look for **Ajax Search Pro** and click on the green **Download** button. Now, click on the **License certificate & purchase code (text)** element.

![Codecanyon downloads page navigation](/files/-LWWTZyHXelib0IqsR_Q)

### Step 3. - Copy the purchase code

After the file is downloaded, open it up, and look for the **Item Purchase Code** section. Below that line, you will see the 36 character code - that is your item purchase code.

![](/files/-LWWUKyLwUj0d29_n5O0)


# Manual Updates

Manual plugin updates

Manually updating the plugin is really easy, just follow the steps below.

## Direct Purchases

## Step 1. - Log in to wp-dreams.com

{% hint style="info" %}
After purchase, you got an email with log-in details, where you can view all your purchases. If you don't find the email or deleted it - don't worry, all you need is the email address you used with the purchase.
{% endhint %}

Use [this link to log-in](https://wp-dreams.com/login/) to wp-dreams.com. Use the email address with your purchase - the password was mailed to you during purchase. If you forgot or lost it, use the *Forgot your password?* link to reset it.

<figure><img src="/files/TVDSccUZr2a2sngvkEkP" alt="" width="375"><figcaption><p>Log in to wp-dreams.com</p></figcaption></figure>

If you forgot your password, just use the *Forgot your password?* link.

<figure><img src="/files/zWnJgSpLwS7XVu5BB0jF" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="/files/gTw9o2FNkTcmlm896Dc0" alt="" width="375"><figcaption></figcaption></figure>

### Step 2. - Navigate to Your Purchases

After a successful log-in, click on the *Your Purchases* button in the top navigation bar.

<figure><img src="/files/MN5w6f0d0qCwDZPUOjaj" alt="" width="375"><figcaption></figcaption></figure>

A list of your purchased products will be displayed. Click on the **Download Latest Version** button to access the latest version.

<figure><img src="/files/3Ghly7H1YrBdj56Ky4q7" alt="" width="375"><figcaption></figcaption></figure>

Upload and install the file via the plugin manager.<br>

<figure><img src="/files/svMDuuDBhBJ7KPLiRvVe" alt="" width="375"><figcaption></figcaption></figure>

WordPress will ask to replace the old one, click the **Replace current with uploaded** button<br>

<figure><img src="/files/iBnbCzSiV5641ZU1jYgI" alt="" width="351"><figcaption></figcaption></figure>

In case you encounter an issue during the update, please check the [safe plugin update how-to](/plugin-updates/safe-update-guide)

## Purchases via Envato Market

1. Download the new version from your [codecanyon downloads page](http://codecanyon.net/downloads). Make sure to download the \
   **Installable WordPress File only** option.\ <br>

   <figure><img src="/files/0VsEzCno8gAe0m0OY11H" alt="" width="375"><figcaption></figcaption></figure>
2. Upload and install the file via the plugin manager.<br>

   <figure><img src="/files/svMDuuDBhBJ7KPLiRvVe" alt="" width="375"><figcaption></figcaption></figure>
3. WordPress will ask to replace the old one, click the **Replace current with uploaded** button<br>

   <figure><img src="/files/iBnbCzSiV5641ZU1jYgI" alt="" width="351"><figcaption></figcaption></figure>

In case you encounter an issue during the update, please check the [safe plugin update how-to](/plugin-updates/safe-update-guide).


# Safe Update Guide

## Safe plugin update how-to

If your automatic or manual update failed, or updating from a significantly older version, please read the following instruction.

This chapter is also available in the [Knowledge base -> Updating from older versions](https://wp-dreams.com/knowledge-base/updating-from-older-versions/)

1. Download the new version from your [codecanyon downloads page](http://codecanyon.net/downloads)
2. Deactivate and delete the older version - your changes and search instances will remain in the database
3. Upload and install the new version
4. **Important:** Open and save each search instance to upgrade the database records and stylesheets.

   ![](https://i.imgur.com/tSs0Voz.png)
5. Open up the `Cache Settings` and `Fulltext Search Settings` (if available) and save them without changing any values.

The search should be working without issues now.

## Possible Issues and Solutions

If you run into issues, please check if there is a solution in the list below.

### Fatal error: file {xyz}.php missing

It means that the upload or the extraction process failed. Try to install the plugin again with the plugin manager. [Installation instructions](https://github.com/wpdreams/ajax-search-pro-documentation/tree/4c728149805c2ecb056ae1e3d65db08f9e4697df/updates/installation_instructions.md)

### Warning: require\_once(...php): failed to open stream:

It means that the upload or the extraction process failed. Try to install the plugin again with the plugin manager. [Installation instructions](https://github.com/wpdreams/ajax-search-pro-documentation/tree/4c728149805c2ecb056ae1e3d65db08f9e4697df/updates/installation_instructions.md)

### Stylesheets are missing or messed up after update

First of all, if you haven't done so: go to the search instance options and save them to re-generate the stylesheets for the new version. (3. point on the paragraph above).

* Make sure you have your browser cache cleared, try different browsers as well
* Make sure to clear your site cache (W3TC, WP Super cache)
* Make sure to clear your CDN cache if you are using any (clouflare, maxcdn, amazon cloudfront)
* Some cache plugins may take 12-24 hours to completely clear - you can try to de-activate the cache plugins temporarly to see the search works then

### The search stopped working

It's most likely a javascript poblem related to caching.

* Make sure you have your browser cache cleared, try different browsers as well
* Make sure to clear your site cache (W3TC, WP Super cache)
* Make sure to clear your CDN cache if you are using any (clouflare, maxcdn, amazon cloudfront)
* Some cache plugins may take 12-24 hours to completely clear - you can try to de-activate the cache plugins temporarly to see the search works then


# Plugin update issues or errors

List of possible update errors and how to resolve them

### List of errors

There are a few possible error messages the WordPress updater can throw:

* An error occurred while updating Ajax Search Pro: Update package not available.

### Resolving automatic update errors

There could be several reasons why the automatic update fails. Below is the list of possible reasons.

* Server cache settings which cause the old package return from the server temporary folder. This can be very hard to debug, the best choice is to [update manually](/plugin-updates/manual-updates).
* You may have a proxy server or a firewall active, make sure to whitelist the plugin update server: **update.wp-dreams.com**
* Trying to update on a multi-site network while you are just a node and doesn’t have the administrator permission.
* The file/folder permission issue.
* Plugin conflict. Try deactivating all the plugins and then try updating.
* Missing **Remote Get** function or **cURL** package for PHP. In this case, contact your service provider.

The best alternative is to [update manually](/plugin-updates/manual-updates).


# Disabling update check

On intranet/internal WordPress installations it might be required to block external requests, including the plugin feature to check for updates.

To do that, use either the [WP\_HTTP\_BLOCK\_EXTERNAL](https://codex.wordpress.org/Editing_wp-config.php#Block_External_URL_Requests) constant in your **wp-config.php** file, that blocks all external requests globally on the whole WordPress installation:

```
define( 'WP_HTTP_BLOCK_EXTERNAL', true );
```

..or, if you wish blocking requests **only** from Ajax Search Pro, then use the *ASP\_BLOCK\_EXTERNAL* constant:

```
define( 'ASP_BLOCK_EXTERNAL', true );
```


# Installation instructions

If you are an experienced user, you may jump to the next chapter.

{% embed url="<https://youtu.be/WjmWq9tYBZM>" %}
Ajax Search Pro download and installation instructions
{% endembed %}

There is an [extensive official guide](https://codex.wordpress.org/Managing_Plugins) on the wordpres.org website on plugin installations. You can read that if you prefer a more detailed guide.

### If you had Ajax Search Lite installed

The Pro version is a separate plugin from Ajax Search Lite, so you can go back to the lite version any time you want to. Before or after installing the Pro version, **please make sure to deactivate the lite version**.

![](/files/-LatGc_iquUFwFi4NS9C)

## Installing Ajax Search Pro via the Plugin Manager

In WordPress the easies way of adding a new plugin is by the built-in plugin manager. Follow these steps to succesfully install this plugin.

#### Downloading the plugin for Direct Purchases

If you purchased the plugin directly from **ajaxsearchpro.com**, then use the log-in details that were sent to you to access the product via [this link](https://wp-dreams.com/products/). If you forgot your password or deleted the email by accident, don't worry, just use the [password reset form](https://wp-dreams.com/resetpass/) with the email you provided during purchase. After logging in, click to the [Your Purchases](https://wp-dreams.com/products/) menu to access the download.

<figure><img src="/files/ADA7gdLPBlVLczzabAHu" alt=""><figcaption></figcaption></figure>

#### Downloading the plugin for purchases via Envato Market (codecanyon.net)

If you purchased the plugin on **codecanyon.net**, follow the instructions below.

Download the ajax-search-pro.zip file on the [codecanyon.net/downloads/](https://codecanyon.net/downloads/) dashboard (the Downloads menu). Make sure to download the **Installable WordPress file only**, as the other archive also contains documentation links and other files.

![](/files/-LatICWEZ4pwJQaHTc5a)

1\. Save the **zip** plugin file somewhere on your computer.

2\. Log in to your WordPress back end area, it's usually on the **yourdomain.com/wp-admin** url

3\. After logging in click on the **Plugins** menu and hit the **Add New** button

![](/files/-LatHIFYmo46yk3q7KI3)

4\. Now, click on the **Upload Plugin** button

![](/files/-LatI--qjWg0GzNFj3-s)

5\. Click on the Choose file button and select the **ajax-search-pro.zip** file. Then click the **Install now** button

![](/files/-LatI43xCHx89z2UPyug)

After successful installation, you will need to activate the plugin. You can do that on the installation page, or go back to the plugins page and activate it there. After installing and activating, you should see the new plugin menu.

![](/files/-LatJS38m2L2l4AEa9gL)

Using this method is highly recommended, it should work on 99% of all servers. If by any reason this method is not working, or it's not possible, then there is another way of installing a WordPress plugin

## Installing via FTP (not recommended)

If the above method is not working, you can use FTP to upload the plugin files. This method is not recommended for beginners, so please be careful.

If you don't know how to connect to your website via ftp, I recommend reading the [Filezilla tutorial](http://www.siteground.com/tutorials/ftp/filezilla.htm).

1. After connecting to your server via ftp, you should search for your site's wordpress directory. It's usually located in a path like **public\_html/wp-content/plugins/ or www/wp-content/plugins/**

   ![](http://i.imgur.com/IngzGPC.png)
2. Unzip the **ajax-search-pro.zip** file and copy the **ajax-search-pro** folder to the servers plugin directory
3. After succesfully copying the **ajax-search-pro** directory you will still need to activate the plugin. Log in to your sites back end.

That's it! After activation you should use be able to use the plugin.

## Multisite installation

Make sure to install the plugin on the **Network admin** aka. the main site, because the plugin needs to be **Network activated** in order to work. The installation is the same as the previous method, just make sure that it is activated on the network admin (main) site.


# Uninstallation & Reset

Maintenance panel features

## Resetting options to default

Under the *Manintenance* options submenu, the plugin can be reset to the default options via clicking the *Reset all options to defaults* button.

The reset means:

* All plugin options **will** reset to defaults (caching, compatibility, index table and statistics options)
* The search instance options **will not** be changed
* The database tables, contents and the files **will not** be deleted either.

![Plugin options reset](/files/-LaQB_9yupppheLJqG1m)

## Uninstallation without deleting the data

By disabling and removing the plugin via the plugin manager, all the plugin options, including the search instances, will remain in the database.

![Uninstallation without deleting the data](/files/-LaQCvsF8EwG0JL6vm4s)

## Complete uninstallation, including all plugin data (wipe)

Under the *Manintenance* options submenu, the plugin can be reset to the default options via clicking the *Wipe all plugin data & deactivate Ajax Search Pro* button.

The wipe means:

* All plugin options **will be deleted**
* The search instances **will be deleted**
* The database tables and the files **will be deleted**
* The plugin **will deactivate** and redirect to the plugin manager screen after, where you can delete it or re-install it again.

![Wiping all plugin data](/files/-LaQCBfgylWiH_zdyRaW)

After wiping all data, the plugin can be deleted via the plugin manager.


# Search AI

### What is Search AI? <a href="#what-is-search-ai" id="what-is-search-ai"></a>

**Search AI** is a suite of AI-powered tools built into Ajax Search Pro that help you *configure*, *diagnose* and *improve* your search without guessing. Instead of digging through settings and statistics by hand, you can let the assistant analyse your content, your index and your real search history, then tell you what's wrong and what to change.

The suite includes tools that:

* **set up a new search instance for you** from a few simple questions (Setup Wizard),
* **explain why a specific search returns nothing** (Diagnostics),
* **report on the health of your search** over the last weeks (Quality Report),
* **find configuration problems** in your priority rules and stopwords,
* and **generate keyword suggestions and synonyms** grounded in your own site.

You'll find everything under **Ajax Search Pro → Search AI** in the WordPress admin menu.

<figure><img src="/files/9AJqjyYojjIQolnafhAG" alt=""><figcaption></figcaption></figure>

#### Requirements & how billing works <a href="#requirements--how-billing-works" id="requirements--how-billing-works"></a>

* **An active license is required.** AI features cannot be enabled until your license key is activated. If it isn't, the panels show a prompt to activate it first.
* **AI usage is metered in tokens.** Every plan includes a **monthly token budget**; each AI action consumes some of it. You can watch your consumption on the [Usage](#usage) tab. Heavier operations (like generating suggestions for many instances at once) warn you before spending a large share of the budget.
* **Results are cached.** Reports, synonym suggestions and wizard configurations are cached, so re-opening a recent result doesn't cost more tokens. You can force fresh results by purging the AI cache.

***

### Settings <a href="#settings" id="settings"></a>

The **Settings** tab is where you turn AI features on and off. Each feature has its own toggle, plus an **Enable all features** switch at the top to turn the whole suite on or off at once. After changing toggles, click **Save**.

The available features are:

| Feature                        | What it does                                                                                                |
| ------------------------------ | ----------------------------------------------------------------------------------------------------------- |
| **Search Diagnostics**         | Conversational "Why isn't X showing up?" assistant. Checks stopwords, index, exclusions and priority rules. |
| **AI Synonym Discovery**       | Suggests creative synonyms — alternative words real users might type for the same content.                  |
| **Search Quality Report**      | Analyses the last 30 days of search statistics and produces an actionable performance report.               |
| **AI Setup Wizard**            | Guides you through creating a new search instance based on your site type and requirements.                 |
| **Priorities Health Check**    | Scans priority rules for orphaned term/post references and suggests new rules based on popular searches.    |
| **Stopword Conflict Detector** | Cross-references zero-result searches with the active stopword list to flag silently dropped keywords.      |
| **AI Keyword Suggestions**     | Pre-generates grounded autocomplete and keyword suggestions from your site's index and search history.      |

<figure><img src="/files/0idCKGtkLYskic0vnviR" alt=""><figcaption></figcaption></figure>

#### AI cache <a href="#ai-cache" id="ai-cache"></a>

Below the toggles, the **AI Cache** section has a **Purge Cache** button. This clears all cached AI responses (quality reports, synonym suggestions, wizard configs) so they're regenerated fresh on next use. Use it when your content or settings have changed significantly and you want the AI to look at the current state rather than a cached snapshot.

<div><figure><img src="/files/yJM2dQuvFYu0kkJq1qwu" alt="" width="375"><figcaption></figcaption></figure> <figure><img src="/files/ekcKbJThldaj8B67DE5g" alt="" width="375"><figcaption></figcaption></figure></div>

***

### Setup Wizard <a href="#setup-wizard" id="setup-wizard"></a>

The **Setup Wizard** builds a complete, ready-to-use search instance for you. It walks through a few short steps and then asks the AI to generate a tailored configuration.

The steps are:

1. **Site type** — WooCommerce store, Blog / News, Documentation, Corporate, or Mixed. This tells the AI what kind of content to optimise for.
2. **Content** — which content types the search should cover (posts, pages, products), and whether to include user profiles and attachments/PDFs.
3. **Search engine** — choose the **Standard** (real-time MySQL) engine or the **Index Table** engine. When you pick Index Table, you can also configure taxonomy-term search, which custom fields to index, and PDF/file content search.
4. **Behavior** — keyword matching (all words / any word), whether to search within post content, whether to show descriptions in results, and the primary language.
5. **Review** — the AI returns a suggested configuration with a plain-language summary and a list of **key decisions** explaining *why* it chose each setting. Give the instance a name and create it.

Once created, you get a link to open the instance list and fine-tune it. If the wizard changed the **Index Table** configuration, it shows a **re-index reminder** with a shortcut to the Index Table page — run a new index so the changes take effect.

<div><figure><img src="/files/C7MEY1FyYCjleWikm1TI" alt="" width="330"><figcaption></figcaption></figure> <figure><img src="/files/BOqgnNgxZY1svFUaLgYN" alt="" width="325"><figcaption></figcaption></figure></div>

***

### AI Keyword Suggestions <a href="#ai-keyword-suggestions" id="ai-keyword-suggestions"></a>

This tool **pre-generates keyword suggestions** for your search instances, grounded in your own index and search history (not generic web data). The generated words can then power your autocomplete and "did you mean" keyword suggestions.

How to use it:

1. Select one or more **instances** (leave empty to generate for all).
2. Set **Max suggestions** per instance (10–1000).
3. Click **Generate**. Generating for many instances or with a high suggestion count can use a significant share of your monthly tokens — the tool warns you with an estimate before proceeding.

Each instance's generated words appear as removable chips, with the count and generation date. You can remove individual words or **Clear all** for an instance.

{% hint style="warning" %}
**Important:** generating the words is only half the job. To actually use them, add **AI Suggestions** as a source in each instance's **Autocomplete** or **Keyword Suggestions** settings. On the frontend, AI-sourced phrases are flagged with a sparkle badge.
{% endhint %}

<figure><img src="/files/XPkKjcWgLOTCF70PiaYn" alt=""><figcaption></figcaption></figure>

***

### Priorities Advisor <a href="#priorities-advisor" id="priorities-advisor"></a>

The **Priorities Advisor** (Priorities Health Check) scans a search instance's priority rules and flags configuration problems, then offers AI recommendations — including new rules suggested from your popular searches.

Pick an instance and click **Run Analysis**. It reports issues such as:

* **Orphaned taxonomy terms** — rules pointing at terms that no longer exist.
* **Orphaned post references** — rules pointing at deleted posts.
* **Empty rules** — rules that target nothing.
* **Misconfigured phrase triggers.**
* **Missing group names.**

Results appear as health chips (or a green "No issues detected") followed by the AI's written analysis and recommendations.

<figure><img src="/files/ZzUjRpRZSx7YIGnwG3Fp" alt=""><figcaption></figcaption></figure>

***

### Stopword Detector <a href="#stopword-detector" id="stopword-detector"></a>

The **Stopword Conflict Detector** finds cases where your **stopword list is silently dropping words that visitors actually search for**. It cross-references zero-result searches from the selected time period against the active stopword list.

Pick an instance, choose the period, and click **Run Analysis**. For each conflicting stopword it shows:

* a **risk badge** (low / medium / high) indicating how safe it is to remove,
* the number of **affected searches**,
* an AI **explanation** and **recommendation**,
* the list of affected zero-result phrases.

You can **Remove** a conflicting word from the stopword list right from the card. After removing words, a re-index is recommended so the change applies to already-indexed content.

{% hint style="info" %}
**Note:** this feature requires stopword filtering to be enabled in the Index Table settings. If it's off, the panel tells you so.
{% endhint %}

<figure><img src="/files/QptQ4mrlyXfpEYANb9rB" alt=""><figcaption></figcaption></figure>

***

### Quality Report <a href="#quality-report" id="quality-report"></a>

The **Search Quality Report** analyses the last 30 days (configurable) of search statistics for an instance and produces an actionable performance report.

Pick an instance, set the number of days, and click **Generate Report**. You get:

* **Key metrics** — total searches, unique phrases, zero-results rate, click-through rate, and average results returned (colour-coded green/amber/red so problems stand out).
* **Breakdown by device** — desktop, mobile and tablet volumes with their zero-result rates.
* **An AI-written report** with concrete recommendations.
* **Top zero-results phrases** — the searches that most often returned nothing. Each row has a **Discover** button (to find synonyms for that phrase) and a **Diagnose** button (to jump straight into Diagnostics for it).

<figure><img src="/files/zecy4VL5OJHCxfdacGsK" alt=""><figcaption></figcaption></figure>

***

### Diagnostics <a href="#diagnostics" id="diagnostics"></a>

**Search Diagnostics** is a conversational assistant that answers the question *"Why isn't this showing up?"* for a specific search.

Enter the **search phrase** a visitor typed and select the **search instance**, then click **Run Diagnostic**. The AI inspects your actual configuration — index hits, tokenization (including words dropped as stopwords or for being too short), keyword logic, taxonomy/date/user/custom-field filters, exclusion rules and matching priority groups — and explains in plain language why results may be missing or unexpected.

* A collapsible **Diagnostic context** panel shows the raw facts the AI based its answer on.
* You can ask **follow-up questions** in a chat, so it's an interactive investigation rather than a one-shot answer.
* Recent diagnostic sessions are kept in a **History** sidebar so you can revisit them.

<figure><img src="/files/fxKFQBer3zautPxXgtQQ" alt=""><figcaption></figcaption></figure>

***

### AI Synonym Discovery <a href="#ai-synonym-discovery" id="ai-synonym-discovery"></a>

**AI Synonym Discovery** suggests alternative words real users might type for the same content, so you can add them as synonyms and catch more searches. Unlike the other tools, it doesn't have its own tab — instead, a **Discover** button (sparkle icon) appears wherever a search phrase is shown and synonyms would help:

* on **zero-result phrases** in the [Quality Report](#quality-report),
* on **popular searches** in the Statistics panels,
* and directly in the **Synonyms** management page.

Click **Discover** next to a phrase to open a popover of suggested synonyms, each with the reason it was suggested and how many times it occurs in your index. Click **Add** to apply a synonym instantly.

{% hint style="info" %}
**Note:** this requires the **AI Synonym Discovery** feature to be enabled in [Settings](#settings). If it's off, the popover links you there.
{% endhint %}

<figure><img src="/files/Td9mfeFRygLFj0Xr0sKg" alt=""><figcaption></figcaption></figure>

***

### Usage <a href="#usage" id="usage"></a>

The **Usage** tab shows your **monthly token consumption**:

* tokens used this month versus your plan's cap, with a progress bar that turns amber and then red as you approach the limit (plans without a cap show "Unlimited usage"),
* your **product/plan name**,
* a **Usage by feature** breakdown (from the local interaction log, last 30 days) showing which features consumed the most tokens and how many calls each made.

Use **Refresh** to pull the latest figures.

<figure><img src="/files/Tv90CnO0SDBhGoIvNztr" alt=""><figcaption></figcaption></figure>

***

### Interaction Log <a href="#interaction-log" id="interaction-log"></a>

The **Interaction Log** records every AI call made from your site — the feature used, a short prompt summary, tokens consumed, whether the result was served from cache, and when it happened. You can **filter by feature** and page through the history.

It's useful for auditing what the AI has been doing and where your tokens are going.

<figure><img src="/files/e6kkJlQcJEGrP2CdjtMK" alt=""><figcaption></figcaption></figure>

***

### Tips & notes <a href="#tips--notes" id="tips--notes"></a>

* **Enable only what you need.** Each feature is independent — turn on just the tools you use to keep things simple.
* **Re-index after stopword changes.** Removing a stopword (via the Stopword Detector) only fully applies once you rebuild the [Index Table](/index-table).
* **Generated suggestions need to be wired up.** AI Keyword Suggestions and discovered synonyms don't affect the frontend until you add **AI Suggestions** as a source (for keywords) or save the synonyms.
* **Purge the cache after big changes.** If you've significantly changed your content or configuration, purge the AI cache so reports reflect the current state.


# Getting started

This article will cover how to create your first search instance and place it on your page, sidebar or theme.

{% embed url="<https://youtu.be/XVWqsZ4ksD4>" %}
Getting Started With Ajax Search Pro
{% endembed %}

## Creating a search instance

By clicking on the newly visible **Ajax Search Pro** menu item on your backend, you will be redirected to a page with a form visible. There you can create your first search instance.

![](http://i.imgur.com/MAmXVQk.png)

After creation the search is already usable. You can skip the configuration if you want to. (you probably won't though)

## Placing the search form on your site

After creating your first search instance, it's already ready to use - but of course you can customize it to your liking.

There are couple of possible ways to put your search instance to your front end:&#x20;

1. Automatically [replace your current search](/getting-started/replacing-the-default-theme-search-bar) (some themes might not support that)
2. Using the [search shortcodes](/getting-started/search-shortcodes)&#x20;
3. Using the [search widget](/getting-started/search-widget)
4. Using the [search as menu item](/getting-started/search-as-menu-item)
5. Using the Post editor or the [WPBakery Builder (Visual Composer)](http://codecanyon.net/item/visual-composer-page-builder-for-wordpress/242431) plugin


# Importing from the Lite version

Migrating from Ajax Search Lite to Ajax Search Pro

{% embed url="<https://youtu.be/leau_4oAZck>" %}
Ajax Search Lite to Ajax Search Pro migration
{% endembed %}

{% hint style="info" %}
Ajax Search Lite and Ajax Search Pro are separate plugins, you can switch back to the Lite version anytime.
{% endhint %}

### Disable the Lite version&#x20;

After activating the Pro version, make sure to disable the Lite version to avoid any possible conflicts. The Lite and the Pro versions are completely standalone plugins.

<figure><img src="/files/PTe66nuFERJRtwSSNnUo" alt=""><figcaption></figcaption></figure>

### Importing Options from the Lite version

The plugin (since version 4.15) auto-detects, if you had [Ajax Search Lite](https://wordpress.org/plugins/ajax-search-lite/) installed previously, and offer a button to import the options from the Lite version to Pro version.

To import the options, simply click on the **Ajax Search Pro** menu, then under the **Create a new search instance** fieldset, click the **Import from Ajax Search Lite** button (don't forget to name the search form as well)

![How to import from Ajax Search Lite](/files/-L_wWlXswLLO8SXl8yAt)

{% hint style="warning" %}
Make sure to check the search options after importing them, as some options might be different in the Lite and Pro versions.
{% endhint %}

### Checking and validating the import

While the import should be seamless across latest releases, it is possible that some differences may occur as both plugins work independently.

#### Verify the layout by preview

The PRO version has a preview windows, where you can verify the layout, in case of any differences you can make the adjustmends under the Theme Options panel.

<div><figure><img src="/files/NnmGxc7mNMd7h3pT5sbR" alt="" width="188"><figcaption><p>Preview button</p></figcaption></figure> <figure><img src="/files/Wcd0e1XCuzNSHzXNeYLm" alt="" width="188"><figcaption><p>Preview Window</p></figcaption></figure> <figure><img src="/files/8zWgFn51xAE80XSWOtlK" alt="" width="188"><figcaption><p>Theme and Layout options</p></figcaption></figure></div>

#### Verify the selected post types

Under the `Search Sources` make sure the correct post types are selected.

<figure><img src="/files/9kIcWC1aXREYdjVjLmw5" alt="" width="188"><figcaption><p>Ajax Search Pro Post Types</p></figcaption></figure>

### Replacing the Lite version shortcode with the Pro version shortcode

Because Ajax Search Lite is only supports a single search instance the shortcodes are different from the Pro version.

In case you have been using the Lite version shortcode:

```
[wpdreams_ajaxsearchlite]
```

..with the desired instance shotcode.

The Pro version shortcode can be found under the Ajax Search Pro menu (instances list). And it's format is:&#x20;

```
[wd_asp id=1]
```

<figure><img src="/files/8R5rarQ719lU5jZPqY00" alt="" width="375"><figcaption><p>Ajax Search Pro Shortcode</p></figcaption></figure>


# Editor Blocks

Gutenberg and Theme editor blocks for Ajax Search Pro

Ajax Search Pro features customizable editor blocks for more convenient usage within the theme customizer as well as the post editor. It supports all block themes and it's probably the most convenient way to add the search to the website.

Similarly to the [search shortcodes](/getting-started/search-shortcodes), you can set the search ID as well as the block type on the editor screen.

### Attributes

* **Type** - The block type: Search Bar, Search Results or Search settings
* **Search ID** - The search instance

<figure><img src="/files/LCcT1QIEcHGhQpIh5OQs" alt=""><figcaption><p>Editor Blocks on the Post Editor Screen</p></figcaption></figure>

<figure><img src="/files/Dsj1LURngMNyu6eqiVIA" alt=""><figcaption><p>Search Shortcode in the Theme Customizer</p></figcaption></figure>


# Search Shortcodes

Placing the search elements to a page via shortcodes

There are four different shortcodes available for each search instance.  Each of these shortcodes can be placed into any post/page or custom post type content or into the theme files.

## Search box shortcode

![](/files/enVH3CUoTenUxKWbnHZN)

This is the most used, all-around shortcode. It places the search form anywhere on your site. This is the shortcode you are looking for in most cases.

### Format:

`[wd_asp id=1]`

### Parameters:

* id (integer) - the id of the search instance

## Settings shortcode (advanced use)

![](/files/SnjR5Ix4tbDtxYsOG7ba)![](/files/BMT6SINrEXQUVWXVFCKM)

Shortcodes for placing the settings box elsewhere, but on the same page where the search shortcode is.

### Format:

`[wd_asp_settings id=1 element='div']`

### Parameters:

* id (integer) - the id of the search instance

## Results shortcode (advanced use)

![](/files/BjGBXoTn9VhVTlXtCAa8)![](/files/JTfvA8QTuT6oyUzExjaO)

Shortcodes for placing the results box elsewhere, but on the same page where the search shortcode is.

{% hint style="warning" %}
The results shortcode is **not made** to be used as a custom results page! It is only to position (detach) the **live search** results list away from the search bar, on the **same page**.
{% endhint %}

### Format:

`[wd_asp_results id=1 element='div']`

### Parameters:

* id (integer) - the id of the search instance

## Two column shortcode (optional)

![](/files/rD6ZrYKc2t8xyD80s2zU)![](/files/4O9QaJIyUHiQHGMmNUlK)

Will place a search box (left) and a result box (right) next to each other, like the one on the demo front page.

### Format:

`[wd_asp_two_column id=1 search_width=50 results_width=50 invert=0 element='div']`

### Parameters:

* id (integer) - the id of the search instance
* search\_width - (integer) the search bar width (in %, not px)
* results\_width - (integer) the results box width (in %, not px)
* invert - (0 or 1) inverts the search and results box position from left to right


# Search Widget

It is possible to add the search to your sites sidebar (or any widgetized area). If you open up the **Widgets** submenu under the **Appearance menu**, you should see three new widgets available.

* Ajax Search Pro
* Ajax Search Pro last searches
* Ajax Search Pro top searches

You can drag-drop each of these boxes to any available widgetized area.

![](http://i.imgur.com/l5Xs9HS.png)

## Ajax Search Pro widget

Simply displays the selected search box.

![](http://i.imgur.com/TdqsUMm.png)

## Ajax Search Pro last and top searches

Will display the latest (or top) search terms in a box from the search statistics database. Please note, that this widget requires the **Search Statistics** to be enabled (disabled by default).

Search statistics can be enabled on the **Search statistics submenu** under the Ajax Search Pro menu item.

### Parameters

Source (Select the search form) - The source of the keywords. Select a search box, or all.

Action on click - What to do when the user clicks on one of the words displayed by the widget.

Number - the number of keywords to show

Delimiter - the delimiter between each word

![](http://i.imgur.com/PY6gVIU.png)


# Gutenberg and Other Page Editors

For better access both default editor shortcodes and Visual Composer shortcodes are provided.

## Gutenberg  Editor - Add Search Bar

On Gutenberg use the "+" button to add a new block, the search for *Ajax Search Pro*, click on the Block to add a new search element.

![](/files/oKVTzrO3NYo8XN2totIB)

You can also use the [search shortcodes](/getting-started/search-shortcodes) within a shortcode or a paragraph block.

## Elementor - Oxygen Builder - WPBakery - Divi Builder and Other builder shortcodes

For page builders, use the shortcode or a simple content element, and place the [plugin search shortcodes](/getting-started/search-shortcodes) there.

![](/files/J27tArBqM9mSHmljYEgB)![](/files/gFzmvPJyzq3mgXO89TAJ)

## Classic Editor Shortcodes

You can easily access every shortcode in the post editor, by clicking on the ASP button.

![](http://i.imgur.com/VTIczca.png)

You can also add the [search shortcodes](/getting-started/search-shortcodes) manually, simply copy/paste them to the content.


# Replacing the default theme search bar

The plugin offers a simple way to override the default theme search bar. On the search settings page you can choose which search instance you want to override the default search bar.

![](http://i.imgur.com/1qGbpZN.png)

This method is supported by 99% of the themes out there. If the default search bar is not replaced after choosing one of the options, you will have to [replace it manually](/getting-started/placing-the-search-shortcode-in-theme-files) in the theme code.


# Placing the search shortcode in theme files

*This is for advanced users only. Please consult with the theme developer first, if you intend to edit your theme files.*

You can place the shortcode to any location, but some locations are not available through content or widgets. These are usually the header, footer or the result loop.

To place the shortcode to the theme you need to find the proper location first. If you are not familiar with theme structures, I suggest you consult a developer before editing anything.

After finding the proper location, you need to place the theme shortcodes there. The difference is, that a theme shortcode is actually a PHP code block. You can find these shortcodes on the same place as the regular ones, on the search settings panel:

![](http://i.imgur.com/j5SYZ4D.png)

A theme shortcode looks like this:

```
<?php echo do_shortcode('[wpdreams_ajaxsearchpro id=1]'); ?>
```

For example:

![](http://i.imgur.com/w7QGOOI.png)


# Search as menu item

How to place the search into a menu

## Recommended Method

Open up the **Appearence -> Menus** page and make sure the Ajax Search Pro is enabled on the screen options.

<figure><img src="/files/MDZ1nQsutCnxeGi93WBJ" alt=""><figcaption></figcaption></figure>

Under the **Appearence -> Menus** on the left side there will be an Ajax Search Pro menu group.

<figure><img src="/files/3ok4Jto2GUWG0clFgO6b" alt=""><figcaption><p>Ajax Search Pro menu element</p></figcaption></figure>

After clicking the *Add To Menu* button, a new menu item will be added to the menu. In this menu element you can choose which Search instance should be used.

<figure><img src="/files/wBHbAw4AvHZBxSag13NS" alt=""><figcaption></figcaption></figure>

### Menu Attributes

* &#x20;<mark style="background-color:purple;">Search</mark>  (drop-down) - To select which search instance should be used
* &#x20;<mark style="background-color:purple;">Prevent custom script events</mark> (checkbox) - If selected, the plugin will try to prevent custom events attached to the parent menu item. It may help in cases where menu has custom redirection or hover related events attached.

## Legacy Method via shortcode

It is possible to use the search box shortcode in a menu as the title field. The menu item will be automatically replaced with the search bar. This simple guide will help you achieve that.

1\) Under the **Appearence -> Menus** submenu open up (or create) the menu you want to edit.

![](http://i.imgur.com/QqCp0qu.png)

2\) Click on the **Custom Links** item and as the *URL* enter anything (I used the '#' character in this example), and as the *Link Text* paste the search shortcode, then click the **Add to Menu** button.

![](http://i.imgur.com/n1ty3oB.png)

3\) That's it. The menu item is created, now you can move it like any other one.

![](http://i.imgur.com/60g2eJe.png)

4\) **Make sure to save the menu**, and the search should appear as a menu item on the front-end.

![](http://i.imgur.com/8ZlPWoY.png)


# Custom result box position

*Custom results position will only work as a "block", thus it won't hover over the desired position, but push it down.*

As you may have seen on the demo page, the results are not always appearing in a "hovering" style under the search bar. In some cases they are placed elswehere on the page.

{% hint style="warning" %}
The results shortcode is **not made** to be used as a custom results page! It is only to position (detach) the **live search** results list away from the search bar, on the **same page**.
{% endhint %}

If you want to place the results somewhere else, you need to place the results box shortcode to the desired position. (the shortcode can be found for each instance on the options panel)

![](/files/-LPVKOIIQQhtN4l4dDBz)

Both regular and theme shortcodes are provided.

You can quickly insert this shortcode to a page or post, by using the post editor.

![](http://i.imgur.com/b8ZZPda.png)

After the changes you should see the results appearing on the desired position, pushing down the content below it.


# Custom filters box position

If you want to place the filters somewhere else, you need to place the settings box shortcode to the desired position. (the shortcode can be found for each instance on the options panel)

![](/files/Fn5HiPtXb4gHwjlvd6Dw)

`[wpdreams_asp_settings id=1 element='div']`

{% hint style="warning" %}
If you copy paste the shortcode from here, don't forget to change the id=1 to the search ID you are using
{% endhint %}

{% hint style="info" %}
Custom filters box position will only work as a "block", thus it won't hover over the desired position, but push it down.
{% endhint %}

### Using Gutenberg editor

Look for the Ajax Search Pro module, then choose the **Search Settings** and the desired **Search ID**:

![](/files/WUpLNS67EAjREjJLt2pS)![](/files/Ga2Imq0SAbXLOz3pHhmx)

### Using Classic Editor

You can quickly insert this shortcode to a page or post, by using the post editor.

![](http://i.imgur.com/9W3J7aN.png)


# Shortcode generator

`Search instance options -> Shortcode generator button`

![](http://i.imgur.com/rgDkVdI.png)

The *shortcode generator* helps you to create a specific arrangement for search elements. It's a great tool if you need to display the search box, the settings box and the result box in a specific way.

## Usage

* Click on the `Shortcode generator` button to open the modal box.
* Choose a pre-defined arrangement from the drop-down list, or use the buttons below it to add/remove the shortcode elements.
* Drag/Drop the elements to change their order.
* Use the width input fields to adjust the element relative width.

![](http://i.imgur.com/0VAHnQc.png)

The above arrangement shortcode will appear on the front-end as:

![](http://i.imgur.com/Cs86sSr.png)


# Search Sources

Where to search and what type of content to return

<figure><img src="/files/yo7uYrtes8F63CoWBRwP" alt=""><figcaption><p>Search Sources - or "General Options" in older versions</p></figcaption></figure>

## Contents

* [Search in Posts and Pages](/general-settings/search-in-posts-and-pages)
* [Search in custom post types](broken://pages/-L9jkL0OR9NWcVq8Vd3k)
* [Search title, content, excerpt](broken://pages/-L9jkL0P8GpgoGB6xkHX)
* [Search in custom fields](/general-settings/search-in-custom-fields)
* [Search in terms (categories, tags...)](/general-settings/search-in-terms-categories-tags...)
* [Exact matches vs. Non exact matches](broken://pages/-L9jkL0VU6GwHwBBJYNT)
* [Categories and terms as results](/general-settings/categories-and-terms-as-results)
* [Attachments search](/general-settings/search-in-attachments)
* [Attachments content search (PDF, Word etc.. indexing)](/general-settings/search-in-attachment-contents-pdf-word-excel-etc..)
* [User search](/general-settings/search-in-users)
* [Image options](/general-settings/image-options)
* [Result ordering](/general-settings/result-ordering)
* [PeepSo Groups & Group activities search](/general-settings/peepso-groups-and-group-activities-search)


# Search Engine

Regular and Index table engine - what are the main differences?

The plugin offers two separate search engines, the **regular** and the **index table** engines.

![](/files/X85V6tGPqsv7XscM2zBd)

We generally recommend using the [Index Table engine](/index-table) for all installations, the regular engine will do just fine for regular use-cases.

Please check the [Index Table](/index-table) documentation on how to configure it.

| Regular Engine                                                | Index Table Engine                                                                |
| ------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| Okay for smaller databases (>1000 items)                      | For any database size, but excellent for performance for bigger ones              |
| Slower, as it uses the WordPress tables for search            | Very Fast - as it uses the custom generated database for the keyword search       |
| Can do Exact Matches on consecutive keywords                  | Exact matches are only possible per keyword                                       |
| Can **not** search shortcode contents                         | **Can extract and search** shortcode contents                                     |
| Only simple relevance calculation due to database limitations | Excellent relevance calculation - as matched keyword occurences can be calculated |


# Post, Page, Product and other Post Type Search

Search in all kinds of custom post types - including Posts, Pages, Products etc..

{% embed url="<https://youtu.be/UnokRaEFsSE>" %}
Searching Custom Post Tyeps with Ajax Search Pro
{% endembed %}

```
Search Sources -> Post Type Search -> Search in custom post types
```

By default the plugin is configured to return Posts and Pages as results. Use the **Search in custom post types** drag and drop option to change that.

Custom post types (or CPT as shorthand) are **WooCommerce Products**, Portfolio Items, Books, Tutorials etc..

![](/files/MbnnzDbWwZM4nZof4gei)

### Regular and Index Table engines

#### Regular Engine

When using the [Regular Engine](/general-settings/search-engine), then choosing the post types here is sufficient, no other configuration is required.

#### Index Table Engine

When using the [Index Table engine](/index-table), then make sure the selected post types on the search instance settings are also selected and indexed on the Index Table settings.

![](/files/MbnnzDbWwZM4nZof4gei)![](/files/nOBqGH5PfSiApxhcNBjL)

{% hint style="info" %}
For each search instance you can choose different post types to search for - but make sure all of these are also indexed on the index table settings.
{% endhint %}


# Searching Titles, Content, Excerpt

## Regular Engine

To select which fields to search for - scroll down further on the options page, where you can choose to search:

* The titles
* The content
* The excerpts
* The permalinks
* The Post IDs

<img src="/files/MakQ1hj6Jn6NjTBR34OP" alt="" data-size="original"><img src="/files/8c7HCIMkfhwqzHc8SgQr" alt="" data-size="original">

## Index Table Engine

Under the **Index Table** submenu, click the **General** Options tab, and select the corresponding options.

![](/files/zSxAEuDOL3wrskuEBboa)


# Search in custom fields

Custom fields like Product SKU, ACF fields and other post metadata search

{% embed url="<https://youtu.be/U9Uc-lfzDZI>" %}
Searching post metadata with Ajax Search Pro
{% endembed %}

```
Search Sources -> Post Type Search -> Search in custom fields
```

In some cases you might need to search in custom fields as well, as some custom post types store data in custom fields.

### Regular Engine

**Searching within specific fields**

* Use the search bar to look for the desired fields
* Drag & Drop the fields needed from the left side of the list to the right

<figure><img src="/files/WjMGVmpj3Xzp3oYMMcG0" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/KSyEdaXZRT3xMTCnu6hX" alt=""><figcaption></figcaption></figure>

**Searching all fields** In cases where most of the fields are required for search, it is easier to simply enable the *Search all custom fields?* option.

<figure><img src="/files/QKzIg1oB9OD1gQIvKmXA" alt=""><figcaption></figcaption></figure>

### Index Table Engine

Use the same option type under the Index Table settings submenu, on the General options panel.

<figure><img src="/files/7kxHE7pyvFXP2Z9vWoeP" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/LICXsh1dLWs9uz8aNlEF" alt=""><figcaption></figcaption></figure>


# Search By Product SKU

How to enable product SKU searches for WooCommerce

```
Search Sources -> Post Type Search -> Search in custom fields
```

### Regular engine (default)

* Under the **Search Sources -> Post Type Search** panel scroll down a bit until you see the **Search in all custom fields? ..or search in selected custom fields** option.
* Into the search input, type "sku". The field "\_sku" should show up.
* Drag the \_sku field to the right side and save the settings.

<figure><img src="/files/WjMGVmpj3Xzp3oYMMcG0" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/HLFoP6Oe9aJTeuw7fpJo" alt=""><figcaption></figcaption></figure>

### Index Table engine

For this to work, you need to have a [configured](/index-table#index-table) and [enabled](broken://pages/-L9jkL18TDdd1o8LThOk) index table engine.

* On the Index Table -> General panel scroll down until you see the **Index Custom Fields** option
* Into the search input type "sku"
* The field "\_sku" should display
* Drag the field to the right side, and save the settings
* Click the "Create new Index" button (green button on the top) to index the newly added field

![](/files/isd92pZA2xACo3pdQcTk)


# Search by categories, tags or other terms

Searching post types (post, page, products etc..) by categories or other taxonomy terms (product categories, portfolio categories etc..)

{% embed url="<https://youtu.be/raMnRioLJsY>" %}
Searching by Taxonomy Terms in Ajax Search Pro
{% endembed %}

## Solution 1 - Regular engine (default)

```
Search Sources -> Post Type Search -> Search in Terms (categories, tags)
```

If you need to look for phrases in categories or other terms and return the related custom posts, then you should turn on this option.

<figure><img src="/files/MakQ1hj6Jn6NjTBR34OP" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/tLLpxEPGf10v5gtiHoFc" alt=""><figcaption></figcaption></figure>

*Please not that this option is extremely resource heavy! Sites with lots of posts/products will most likely experience higher delays in ajax search. In case of performance issues, please consider using the second solution.*

## Solution 2 - Index table engine

```
Index table (submenu) -> General options -> Index taxonomies
```

If you are using the index table engine, you can choose which taxonomy terms to index along with the post types you have choosen.

*Please note that this solution only works if you use the index table engine. You can read more* [*about using it here*](/index-table)*.*

![](http://i.imgur.com/CVYvekd.png)

Tags: *search in categories, search in category, search in tags, category as result, categories as results, terms as results, return categories, return tags, return taxonomy terms*


# Search in Attachments

Configuration to search in attachment data, except file contents.

```
General Options ->Attachments
```

This section details only the **basic search** in attachment titles, content field, captions and terms, **not** file contents.

If you need to search **file contents** as well, please check the [Search in attachment contents](/general-settings/search-in-attachment-contents-pdf-word-excel-etc..) documentation.

## Enabling Attachment Search

To enable the attachment search, simply go to the `General Options -> Attachments` panel and click turn on the `Return attachments as results?` option:

![](http://i.imgur.com/bliARL8.png)

By default, the plugin will look in attachment **Titles**, **Content** and **Caption**s fields, you can adjust these options on the same page:

![](http://i.imgur.com/uyulixu.png)

## Mime Types (file types)

By default .jpeg, .png, .tiff and .ico files are set to return as results, but you can add any mime (file) type of your choice. To get your desired mime type, please check the [WordPress allowed mime types table](https://codex.wordpress.org/Function_Reference/get_allowed_mime_types) table or the table in chapter below.

To allow more mime types, simply enter them to the `Allowed mime types` textarea option **separated by commas**:

![](http://i.imgur.com/f1yUA1M.png)

### Allowed mime types table

[Here is a local, formatted copy](/general-settings/search-in-attachments#allowed-mime-types-table) of the allowed mime types table.


# Mime types table

This page lists the supported file mime types by WordPress

This is a fromatted copy of the official [WordPress allowed mime types](https://codex.wordpress.org/Function_Reference/get_allowed_mime_types) list.

### Allowed mime types table

| File extension                  | Mime type                                                                 |
| ------------------------------- | ------------------------------------------------------------------------- |
|                                 | **IMAGE FORMATS**                                                         |
| jpg, jpeg, jpe                  | image/jpeg                                                                |
| gif                             | image/gif                                                                 |
| png                             | image/png                                                                 |
| bmp                             | image/bmp                                                                 |
| tif, tiff                       | image/tiff                                                                |
| ico                             | image/x-icon                                                              |
|                                 | **VIDEO FORMATS**                                                         |
| asf, asx                        | video/x-ms-asf                                                            |
| wmv                             | video/x-ms-wmv                                                            |
| wmx                             | video/x-ms-wmx                                                            |
| wm                              | video/x-ms-wm                                                             |
| avi                             | video/avi                                                                 |
| divx                            | video/divx                                                                |
| flv                             | video/x-flv                                                               |
| mov, qt                         | video/quicktime                                                           |
| mpeg, mpg, mpe                  | video/mpeg                                                                |
| mp4, m4v                        | video/mp4                                                                 |
| ogv                             | video/ogg                                                                 |
| webm                            | video/webm                                                                |
| mkv                             | video/x-matroska                                                          |
|                                 | **TEXT FORMATS**                                                          |
| txt, asc, c, cc, h              | text/plain                                                                |
| csv                             | text/csv                                                                  |
| tsv                             | text/tab-separated-values                                                 |
| ics                             | text/calendar                                                             |
| rtx                             | text/richtext                                                             |
| css                             | text/css                                                                  |
| htm, html                       | text/html                                                                 |
|                                 | **AUDIO FORMATS**                                                         |
| mp3, m4a, m4b                   | audio/mpeg                                                                |
| ra, ram                         | audio/x-realaudio                                                         |
| wav                             | audio/wav                                                                 |
| ogg, oga                        | audio/ogg                                                                 |
| mid, midi                       | audio/midi                                                                |
| wma                             | audio/x-ms-wma                                                            |
| wax                             | audio/x-ms-wax                                                            |
| mka                             | audio/x-matroska                                                          |
|                                 | **MISC FORMATS**                                                          |
| rtf                             | application/rtf                                                           |
| js                              | application/javascript                                                    |
| pdf                             | application/pdf                                                           |
| swf                             | application/x-shockwave-flash                                             |
| class                           | application/java                                                          |
| tar                             | application/x-tar                                                         |
| zip                             | application/zip                                                           |
| gz, gzip                        | application/x-gzip                                                        |
| rar                             | application/rar                                                           |
| 7z                              | application/x-7z-compressed                                               |
| exe                             | application/x-msdownload                                                  |
|                                 | **MICROSOFT OFFICE FORMATS**                                              |
| doc                             | application/msword                                                        |
| pot, pps, ppt                   | application/vnd.ms-powerpoint                                             |
| wri                             | application/vnd.ms-write                                                  |
| xla, xls, xlt, xlw              | application/vnd.ms-excel                                                  |
| mdb                             | application/vnd.ms-access                                                 |
| mpp                             | application/vnd.ms-project                                                |
| docx                            | application/vnd.openxmlformats-officedocument.wordprocessingml.document   |
| docm                            | application/vnd.ms-word.document.macroEnabled.12                          |
| dotx                            | application/vnd.openxmlformats-officedocument.wordprocessingml.template   |
| dotm                            | application/vnd.ms-word.template.macroEnabled.12                          |
| xlsx                            | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet         |
| xlsm                            | application/vnd.ms-excel.sheet.macroEnabled.12                            |
| xlsb                            | application/vnd.ms-excel.sheet.binary.macroEnabled.12                     |
| xltx                            | application/vnd.openxmlformats-officedocument.spreadsheetml.template      |
| xltm                            | application/vnd.ms-excel.template.macroEnabled.12                         |
| xlam                            | application/vnd.ms-excel.addin.macroEnabled.12                            |
| pptx                            | application/vnd.openxmlformats-officedocument.presentationml.presentation |
| pptm                            | application/vnd.ms-powerpoint.presentation.macroEnabled.12                |
| ppsx                            | application/vnd.openxmlformats-officedocument.presentationml.slideshow    |
| ppsm                            | application/vnd.ms-powerpoint.slideshow\.macroEnabled.12                  |
| potx                            | application/vnd.openxmlformats-officedocument.presentationml.template     |
| potm                            | application/vnd.ms-powerpoint.template.macroEnabled.12                    |
| ppam                            | application/vnd.ms-powerpoint.addin.macroEnabled.12                       |
| sldx                            | application/vnd.openxmlformats-officedocument.presentationml.slide        |
| sldm                            | application/vnd.ms-powerpoint.slide.macroEnabled.12                       |
| onetoc, onetoc2, onetmp, onepkg | application/onenote                                                       |
|                                 | **OPEN OFFICE FORMATS**                                                   |
| odt                             | application/vnd.oasis.opendocument.text                                   |
| odp                             | application/vnd.oasis.opendocument.presentation                           |
| ods                             | application/vnd.oasis.opendocument.spreadsheet                            |
| odg                             | application/vnd.oasis.opendocument.graphics                               |
| odc                             | application/vnd.oasis.opendocument.chart                                  |
| odb                             | application/vnd.oasis.opendocument.database                               |
| odf                             | application/vnd.oasis.opendocument.formula                                |
|                                 | **WORDPERFECT FORMATS**                                                   |
| wp, wpd                         | application/wordperfect                                                   |
|                                 | **iWORK FORMATS**                                                         |
| key                             | application/vnd.apple.keynote                                             |
| numbers                         | application/vnd.apple.numbers                                             |
| pages                           | application/vnd.apple.pages                                               |


# Search in File contents (pdf, word, excel etc..)

This section will guide you each step to index and search media f contents.

## Prerequisites

To search attachment contents, the index table engine is required. Before you start with this tutorial, I highly suggest reading up the [introduction to the index table](/index-table).

{% embed url="<https://youtu.be/NV8x2XhU_Vo>" %}

## Step 1 - Index table configuration

Open up the *Index table* submenu, located under the *Ajax Search Pro* main menu.

![](/files/-LB6T-g6AiHfPCZO-qpk)

### Choosing the Attachment post type to index

On the **General** panel, under the **Post types to index** option, choose the *Attachment - Media* post type, that will unlock the **Media Service** and **File indexing** options.

<figure><img src="/files/KdI0SiH8tP9B4CLdRkl9" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/88ckVXYD1fieX4DUsqFL" alt=""><figcaption></figcaption></figure>

### Media Service parser feature - Recommended

Registering a [Media Service license key](https://ajaxsearchpro.com/media-service-subscription-addon/) (Free version available!) will enable sending the files to an external server for the best and most accurate file indexing.

Once you have a license key, you can [this documentation](/index-table/file-content-search-addon) on how to enable it - although it is fairly simple, you just put the key into the input field, and hit the **Activate** button. Once it is activated, the plugin will attempt to index all file types selected via this parser automatically. That's it!

<figure><img src="/files/3MPhtKRK6BRHwMOVk8KA" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/fPl2L3l5v04OWaTs36mG" alt=""><figcaption></figcaption></figure>

#### What happens if I don't want use the Media Parser?

No worries! Then the local, built-in file parser will be used. In most cases they do the job, but they are much less efficient. Please check the [Local Parsers](#local-parsers) section below for more information.

### Choosing the file mime types to index

Each attachment has a so-called mime type. The file mime type determines what file the system is dealing with.

Too choose the type, simply scroll down to the **File indexing options** section, and choose the file types you wish to index.

<figure><img src="/files/spwMJxhyomAG11KHopod" alt=""><figcaption></figcaption></figure>

#### Entering the mime types manually

If you wish, you can switch to manual mode by clicking the **>>Enter Manually<<** link.

<figure><img src="/files/AFMuGnsb3leKWCxgdBHv" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/RuKwFJDz0wNb4GZFNtaf" alt=""><figcaption></figcaption></figure>

[Here ](/general-settings/search-in-attachments/mime-types-table)you can find the list of supported mime types.

### Enabling file content indexing

After entering the desired mime types, the the file content indexing options will unlock (based on which mime types are entered)

Click on the **On/Off** buttons to switch which file type contents should be indexed.

<figure><img src="/files/E339CGdT2IXYCWdjdQ4t" alt=""><figcaption></figcaption></figure>

### Save and Index

After choosing all the desired options, it is time to *Save the configuration* on the bottom of the page, and then *generating the index*.

<figure><img src="/files/wjhcohPgxqRN9rZkrOdk" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/YCvpohbkrXz8fjxzEAgH" alt=""><figcaption></figcaption></figure>

## Step 2 - Search instance configuration

We are almost done, now the desired search instance needs to be configured to use the index table for attachments. If you have not created a search instance yet, make sure to [do it first](/getting-started).

On the search instance options, go to the *Search Sources -> Media Files Search* panel. After doing so, change the first two options:

* *Return media files as results:* **ON**
* *Search engine for media results:* **Index table engine**

<figure><img src="/files/Jem34Jy06UmTGcd9HLwy" alt=""><figcaption></figcaption></figure>

**Save the options**, and it is done. The search should return attachments based on their content now.

## Local Parsers

When the [Media Service](/index-table/file-content-search-addon) is not enabled, the local file parsers are used. Because these have to be executed on your local server, they depend on the local server performance as well, and they are generally less accurate and less efficient.

### Minimum requirements & supported formats

Only some of the parser scripts require some standard libraries to be installed/enabled. Usually these modules are enabled on most server hosts by default.

* For Microsoft Office and Open Office documents - [ZipArchive](http://php.net/manual/en/class.ziparchive.php)  and [php-xml](https://stackoverflow.com/questions/38793676/php-xml-extension-not-installed) PHP modules (enabled on most  hosts) Supported file types: **.docx, .xlsx, .pptx, .odt, .ott, .odm, .ods, .odp**

{% hint style="warning" %}
Older **MS office 97-2003** file formats **may not work correctly!** These include **.xls, .doc, .ppt**
{% endhint %}

Indexing other documents is still possible, without meeting these requirements (RTF, TXT, CSV etc..)

### Possible limitations - fair use

The local parser libraries are highly optimized, and their performance mostly depends on the actual server performance, however there are a few things to consider when using an average server, that may affect the performance greatly:

* *Document length* - documents **over 30-60** pages can get very difficult to index, and may fail, especially PDF files. Therefore it is not recommended to use this feature to index long books/documents.
* *File size* - documents with **large images/attachments** can be difficult and costly to read from the servers perspective. Optimally, the document should only contain the text to be indexed, although some graphics should not be an issue at all.
* *Secured or Password protected documents* - Secure or password protected documents are not possible to parse.

{% hint style="info" %}
Use the [Media Service feature](/index-table/file-content-search-addon) - it is much more efficient, and you don't have to worry about anything. It will index all documents as accurately as possible.
{% endhint %}


# Search in Users

```
Search Sources -> User Search
```

The plugin provides a highly configurable user search engine as well.

<figure><img src="/files/WTQlnh0FmQwOnZT8xtFn" alt=""><figcaption></figcaption></figure>

## Searching simple user fields

To search Login, Display, Firs, Last names or user Bio (description), use the following settings on the User Search options panel:

![](http://i.imgur.com/ocfrWsr.png)

## Excluding Roles

If you want to exclude a group of users (typically administrators) from the results, then use the **User roles exclude** option:

![](http://i.imgur.com/pCvTcvZ.png)

## Displaying user Images

The plugin will automatically try to display the default user images, but if you wish not displaying user images, or you want to display the BBPress user avatars instead, use the **Display user images?** and the **Image Source** opions:

![](http://i.imgur.com/OEEaU19.png)

## Advanced Usages

* [Searching in User Meta fields - like WooCommerce city, state, postcode etc...](/general-settings/search-in-users/user-meta-fields)


# User meta fields

Search within user meta fields

`Search Sources -> User Search -> Search in following user meta fields` option.

User meta fields are used in WordPress to allow plugin developers to store additional user data (like city, state etc..). These fields are also searchable with Ajax Search Pro.

To search these meta fields, search and select them in the **Search in following user meta fields** option:

![](/files/-Lr8NxdoiKNvlMo7Vbud)

## Searching WooCommerce Billing and Shipping data with user meta fields

WooCommerce stores each of the Billing and Shipping data fields as user meta fields - thus allowing Ajax Search Pro to search through them.

Here is a table with the profile field names, since they are not visible:

![](http://i.imgur.com/XYxuCld.png)

To use these values, simply enter them into the option field.

**Example:** You want to search the *billing first name, billing last name and the shipping company and shipping postcode*, then based on the table you should enter:&#x20;

`billing_first_name, billing_last_name, shipping_company, shipping_postcode`

like so:

![](/files/-Lr8OAqE9wox3_iAmCHH)


# Limits (number of results)

Number of results on the live results list as well as the results page

`Search Sources -> Limits`

![](/files/uATum6foRdmrpgFhXSAh)

For each results group there is a separate opion to control the live results list results count, as well as the results count on the search results page.

#### Distribute the posts limit between each post type equally?

When this option is enabled, the number of results (post type results limit) is distributred within the selected post types. For example.: if the limit is set to 10, and you have posts and pages selected, then the plugin will show at most 5 posts and 5 pages as results.

![](/files/-MVGeFP9KJSuvROhxDso)


# Categories and terms as results

Searching Categories, Tags and any other Taxonomy Terms and returning them as Results

![](/files/UOOKVnDcwJ0c1YgethGL)

Under the **Search Sources -> Taxonomy Terms Search** panel, choose the Taxonomies where you want to return the results from.

These options are to return taxonomy **terms** **as results**. If you want to search **Post Types by categories** please check the [search by categories feature](/general-settings/search-in-terms-categories-tags...).


# Image options

`Search Sources -> Image Options`<br>

![](/files/BOcW8uXbRoRR4qY4T0pZ)

## Image sources

```
Search Sources -> Image Options -> Primary image source / Secondary image source / ...
```

### Post Type Image Sources

![](/files/JKFAgmzM5VfoZSxP0H38)

The search will parse through the given image sources starting from the primary source. As soon as an image is found it returns that image to the main thread and displays it on the results list.

![](http://i.imgur.com/ABITbQW.png)

There are currently 6 different image sources to choose from:

* Featured image
* Post content parsing
* Post excerpt parsing
* Custom field as image source
* Page screenshot (WARNING - THIS IS AN EXTERNAL SOURCE, IT CAN BE VERY SLOW)
* The default image

### Image from a custom field

```
Search Sources -> Image Options -> Custom field containing the image
```

If you have choosen for any image source a custom field, then you must enter the name of the custom field which holds the image URL or the image ID (the plugin auto detects)

![](http://i.imgur.com/MRiAxlk.png)

### Parser options

#### Image number the parser should get from the fields

![](/files/-M2i0JBVHUawj1mtqQ5A)

If there are more then one images found in the corresponding field (such as the post content), then the plugin will use the image number specified here.

#### Image exclusions by file names

![](/files/-M2i0aDO0loZrv-aFfuO)

If an image file name matches any of the strings entered here, the plugin will ingore it.


# Result ordering

```
Search Sources -> Ordering
```

![](/files/FjAyPNVqtSA77hy84XZY)

On this options page you can change the individual and mixed result ordering.

## Primary and secondary main ordering

```
Search Sources -> Ordering -> Result Ordering
```

This option will change the ordering of items in the same result type group. Default is "Date descending".

![](/files/C2s0ePWlLRLoR53f8BaK)

*Also note, that this is only a secondary ordering, as Relevance is the primary. You can disable relevance ordering on the Relevance Options panel.*

### Ordering by custom fields

When choosing Custom field based primary or secondary ordering, two other fields will pop up:

* *Custom field name* - The name of the custom field.
* *Type* - Numeric or String (date type fields will work with both options)

![](/files/z9mScPjWnOWy7mR82AC1)

#### Most common custom fields

This list will contain some of the most used custom fields, use it in the 'custom field name' section.

* WooCommerce price fields: \_*price, \_sale\_price, \_regular\_price*&#x20;
* The Events Calendar dates: \_*EventStartDate, \_EventEndDate*
* Events Manager dates: \_*event\_start, \_event\_end*

## Post type ordering

By default all post type results (posts, page, products etc..) are ordered as one group, regardless of the post type itself.

If you want to prioritize certain post type over others - for example display product results first, then posts, pages etc.. - then make sure to enable post type group ordering.

![](/files/nfTwuTLIixhmmTRHAByJ)

## Mixed content ordering

```
General Options -> Ordering -> Mixed results order
```

If more than one result type group is active then you can order these groups here.

For example you have a search configured for **Posts** and **BuddyPress activities**. You want the BuddyPress Activities displayed first. In this case you will need to drag the **"bp\_activities"** item above the **"post\_page\_cpt"** item:

![](http://i.imgur.com/WTcWHRM.png)

### The items in the list explained

* **terms** - categories and terms
* **post\_page\_cpt** - posts, pages and every custom post type
* **blogs** - blog results (blogs as result)
* **comments** - comment results
* **bp\_activities** - BuddyPress activities
* **bp\_groups** - BuddyPress groups
* **bp\_users** - BuddyPress users


# Peepso Groups & Group activities search

General Options -> PeepSo

This option is only visible if you have [PeepSo](https://wordpress.org/plugins/peepso-core/) and [PeepSo groups](https://www.peepso.com/downloads/groupso/) plugins installed.

![](/files/7c0jmy8fxACREKKptwZ2)

### Searching & returning Groups as results

The first section of the options enables searching the PeepSo groups. You can choose to search:

* Public, Private and Closed groups
* Search by Titles, Descriptions and by Categories
* ..and also exclude groups by IDs

![PeepSo group search options](/files/-LG6cFHJbwdb237ThJ6w)

### Searching & returning Group Activities

This section defines if PeepSo group Posts and Comments should be returned.

![PeepSo Group activities search options](/files/-LG6cdJC6lMMci9goPTK)

The search can be restricted to public, closed and secret groups, as well as to groups which the current logged in user actually follows.

### PeepSo results & Grouping

Grouping PeepSo results is possible by content type. The grouping options can be found under the *Advanced Options -> Grouping* pabel. More information about [grouping here](/advanced-options/grouping-results).


# Grouping title duplicates

{% hint style="warning" %}
This is not the same as [results grouping](/advanced-options/grouping-results) feature.
{% endhint %}

![](/files/EHeQbgfGSLDv1yEJrBNC)

In some rare cases it might be required to group the results by titles instead of IDs. Post types are distinctive by IDs (each post and post type object has a different ID). Mostly, event calendar type plugins do use the same title (for example recurring events), and then this feature can be really handy.


# Behavior

```
General Options -> Behavior
```

![](http://i.imgur.com/eygpuIf.png)

On this page you can adjust the internal behavior of the search box. This includes the results count, keyword logic and the triggering events as well.

## Contents

* [Results count, keyword logic, exact matches](https://github.com/wpdreams/ajax-search-pro-documentation/tree/4c728149805c2ecb056ae1e3d65db08f9e4697df/behavior/results_count_keyword_logic_exact_matches.md)
* [Triggering events](/behavior/triggering-events)
* [Return key and Magnifier icon click actions](/behavior/return-key-and-magnifier-icon-click-actions)
* [Results page override](/behavior/results-page-override)


# Return/Enter key and Magnifier icon click actions

Change what happens by clicking the search magnifier icon or when hitting the keyboard enter key

`Search Behavior -> Magnifier and Return Actions`

<figure><img src="/files/twQyWjODSelwsfM7f2zJ" alt=""><figcaption></figcaption></figure>

These settings control what happens when the user clicks the search bar magnifier icon or hits the enter key on the keyboard.

## Redirection

![](http://i.imgur.com/gi5nxbT.png)

These option will allow you to either:

* Redirect when clicking on search icon
* Redirect when hitting the return key

It is possible to redirect either to the default

* Results page or WooCommerce results page&#x20;
* First Matching result
* Custom URL

### How to disable results page archive on enter or return key, and do live search only

Do do that, make sure to set both the magnifier and return key actions to **Trigger Live search** or **Do nothing** values.

<figure><img src="/files/dkLc3TVElfhbZAudtUFH" alt=""><figcaption></figcaption></figure>

## Redirection to custom URL

In case you have a different search template or using permalinks, you can change the redirection URL with this option.

The default value should work with all themes though.

The **{phrase}** variable is always replaced with the actual search phrase.

This is also a great option to add additional parameters to the redirection. For example if you want to redirect to the WooCommerce product results page, you should change it to "?s={phrase}\&post\_type=product" like so:

![](http://i.imgur.com/whw0oq5.png)


# Search logic (primary and secondary)

Primary and secondary keyword logic

```
Search Behavior -> Keyword Logic and Matching
```

![](/files/gRDRI8gC4DlfXEu8oGVM)

There are **4 possible logics** to choose from:

* OR (default)
* OR with exact word matches
* AND
* AND with exact word matches

The default is "OR". For more information about the logics please read [search logics explained](/behavior/search-logic/search-logics-explained)

### Primary vs Secondary keyword logic

Primary is the main logic, that the search uses by default. When there are not enough results to reach the [limit](broken://pages/-L9jkL0axQfFUrEZ1mqf), the plugin automatically tries again with secondary keyword logic to fill the remaining results.

Always choose a more strict logic as the primary, and a less strict as secondary. Logic order by strictness (most strict first):

1. AND with exact keyword matches
2. AND
3. OR with exact keyword matches
4. OR

Recommended configurations:

| Primary keyword logic          | Secondary keyword logic       |
| ------------------------------ | ----------------------------- |
| AND with exact keyword matches | AND                           |
| OR with exact keyword matches  | OR                            |
| AND                            | OR with exact keyword matches |
| AND                            | OR                            |
| AND with exact keyword matches | OR with exact keyword matches |
| AND with exact keyword matches | OR                            |


# Exact Matches vs Fuzzy Matches

Exact matching and Fuzzy Matching options

`General Options -> Logic & Behavior`

By default the plugin uses fuzzy matching across the selected fields.

![](/files/fM3MDH3ePyu37BgJK3qM)

When exact matching is enabled, the plugin no longer considers each keyword as separate, but the whole phrase is a single keyword.

### Match location

| Post Title           | Phrase       | Match "Anywhere" | Match "Starting with" | Match "Ending With" | Complete Match |
| -------------------- | ------------ | ---------------- | --------------------- | ------------------- | -------------- |
| **Hello** world!     | hello        | YES              | YES                   | NO                  | NO             |
| H**ello** world!     | ello         | YES              | NO                    | NO                  | NO             |
| Hello **world!**     | world!       | YES              | NO                    | **YES**             | NO             |
| Hello **world**!     | world        | **YES**          | NO                    | **NO**              | NO             |
| **Hello** **world**! | Hello world  | **YES**          | **YES**               | **NO**              | NO             |
| **Hello world!**     | hello world! | **YES**          | **YES**               | **YES**             | **YES**        |

### Secondary logic matching

![](/files/-M2d5G5S0vLWRjT2BrWN)

When enabled, and there are not enough matches to fullfill the [limit](broken://pages/-L9jkL0axQfFUrEZ1mqf) set to the results, the plugin will trigger a fuzzy search with the [secondary keyword logic](/behavior/search-logic) set - to fill the remaning result places.


# Search logics explained

Primary and secondary keyword logics explained

The logic on the same or across the separate fields for each keyword (title, content, excerpt etc..)

## OR

Match is found if any of the search keywords is part of the content. It's the least strict of all possible options - it returns many results, finds almost anything.

| Keyword        | Fields                                                                                                                                      | Match? |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
| hello          | <p><em>Post Title:</em><br><strong>Hello</strong> big world!</p><p><br><em>Post Content:</em> <br>Robot here!</p>                           | YES    |
| hello wor      | <p><em>Post Title:</em></p><p><strong>Hello</strong> big <strong>wor</strong>ld!</p><p></p><p><em>Post Content:</em> </p><p>Robot here!</p> | YES    |
| hello robot    | <p><em>Post Title:</em></p><p><strong>Hello</strong> big world!</p><p></p><p><em>Post Content:</em></p><p><strong>Robot</strong> here!</p>  | YES    |
| hel bot        | <p><em>Post Title:</em></p><p><strong>Hel</strong>lo big world!</p><p></p><p><em>Post Content:</em></p><p>Ro<strong>bot</strong> here!</p>  | YES    |
| help bot hello | <p><em>Post Title:</em></p><p><strong>Hello</strong> big world!</p><p></p><p><em>Post Content:</em></p><p>Ro<strong>bo</strong>t here!</p>  | YES    |
| hello science  | <p><em>Post Title:</em></p><p><strong>Hello</strong> big world!</p><p></p><p><em>Post Content:</em></p><p>Robot here!</p>                   | YES    |

## OR with exact word matches

Similar to the simple OR, but at least one keyword must match a whole word. Partial results are not accepted.

| Keyword        | Fields                                                                                                                                      | Match?                                   |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| hello          | <p><em>Post Title:</em><br><strong>Hello</strong> big world!</p><p><br><em>Post Content:</em> <br>Robot here!</p>                           | YES                                      |
| hello wor      | <p><em>Post Title:</em></p><p><strong>Hello</strong> big <strong>wor</strong>ld!</p><p></p><p><em>Post Content:</em> </p><p>Robot here!</p> | YES                                      |
| hello robot    | <p><em>Post Title:</em></p><p><strong>Hello</strong> big world!</p><p></p><p><em>Post Content:</em></p><p><strong>Robot</strong> here!</p>  | YES                                      |
| hel bot        | <p><em>Post Title:</em></p><p><strong>Hel</strong>lo big world!</p><p></p><p><em>Post Content:</em></p><p>Ro<strong>bot</strong> here!</p>  | <p>NO</p><p>(whole word don't match)</p> |
| help bot hello | <p><em>Post Title:</em></p><p><strong>Hello</strong> big world!</p><p></p><p><em>Post Content:</em></p><p>Ro<strong>bo</strong>t here!</p>  | YES                                      |
| hello science  | <p><em>Post Title:</em></p><p><strong>Hello</strong> big world!</p><p></p><p><em>Post Content:</em></p><p>Robot here!</p>                   | YES                                      |

## AND

Every keyword must match at least partially the content.

| Keyword        | Fields                                                                                                                                      | Match?  |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| hello          | <p><em>Post Title:</em><br><strong>Hello</strong> big world!</p><p><br><em>Post Content:</em> <br>Robot here!</p>                           | YES     |
| hello wor      | <p><em>Post Title:</em></p><p><strong>Hello</strong> big <strong>wor</strong>ld!</p><p></p><p><em>Post Content:</em> </p><p>Robot here!</p> | YES     |
| hello robot    | <p><em>Post Title:</em></p><p><strong>Hello</strong> big world!</p><p></p><p><em>Post Content:</em></p><p><strong>Robot</strong> here!</p>  | **YES** |
| hel bot        | <p><em>Post Title:</em></p><p><strong>Hel</strong>lo big world!</p><p></p><p><em>Post Content:</em></p><p>Ro<strong>bot</strong> here!</p>  | **YES** |
| help bot hello | <p><em>Post Title:</em></p><p><strong>Hello</strong> big world!</p><p></p><p><em>Post Content:</em></p><p>Ro<strong>bo</strong>t here!</p>  | NO      |
| hello science  | <p><em>Post Title:</em></p><p><strong>Hello</strong> big world!</p><p></p><p><em>Post Content:</em></p><p>Robot here!</p>                   | NO      |

## AND with exact word matches

The most strict search logic. Every keyword must match a whole word in the content.

| Keyword        | Fields                                                                                                                                      | Match?  |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| hello          | <p><em>Post Title:</em><br><strong>Hello</strong> big world!</p><p><br><em>Post Content:</em> <br>Robot here!</p>                           | YES     |
| hello wor      | <p><em>Post Title:</em></p><p><strong>Hello</strong> big <strong>wor</strong>ld!</p><p></p><p><em>Post Content:</em> </p><p>Robot here!</p> | NO      |
| hello robot    | <p><em>Post Title:</em></p><p><strong>Hello</strong> big world!</p><p></p><p><em>Post Content:</em></p><p><strong>Robot</strong> here!</p>  | **YES** |
| hel bot        | <p><em>Post Title:</em></p><p><strong>Hel</strong>lo big world!</p><p></p><p><em>Post Content:</em></p><p>Ro<strong>bot</strong> here!</p>  | NO      |
| help bot hello | <p><em>Post Title:</em></p><p><strong>Hello</strong> big world!</p><p></p><p><em>Post Content:</em></p><p>Ro<strong>bo</strong>t here!</p>  | NO      |
| hello science  | <p><em>Post Title:</em></p><p><strong>Hello</strong> big world!</p><p></p><p><em>Post Content:</em></p><p>Robot here!</p>                   | NO      |


# Live search triggering events

`Search Behavior -> Live Search Triggers`

With the triggering options you can change which mouse or keyboard events should the search box react to.

![](/files/AH79WxOTVH46SdFxlH6V)

### Live search Options  explained

* **Trigger search when changing a facet on settings?** - Will trigger the search if the user changes a check-box, radio button, slider on the front-end search settings panel.
* **Trigger search when typing?** - Triggers the search when the user types in something.
* **Minimal character count to trigger search** - The minimum amount to start the search. Each option above respects this rule.
* [Mafnifier and Return button triggers](/behavior/return-key-and-magnifier-icon-click-actions) can also be changed

### How to disable live search?

By turning OFF the **Trigger search when changing a facet on settings?** and the **Trigger search when typing?** options.

### Can I start the search without the search phrase? (for example using only filters)

Yes, you actually can. Set the `Minimal character count to trigger search` option to 0. This way the search will start without any input characters.


# Results page override

```
Search Behavior -> Magnifier and Return Actions
```

### Redirection to results page

Before you start, you might want to enable the magnifier or return buttons to redirect to the results page. [Please read this section](/behavior/return-key-and-magnifier-icon-click-actions) on how to do that.

![](/files/SclZaLRkNvYqA18OYv0i)

### Override

This option allows you to display the results from Ajax Search Pro instead of the default WordPress search results on the search results page.

![](http://i.imgur.com/tEbn22v.png)

{% hint style="warning" %}
**NOTICE:** This option **does not affect** the layout nor the styling of the results page.
{% endhint %}

{% hint style="success" %}

#### The override does not seem to work, even though I enabled it. What do I do?

Under the **Compatibility Options** submenu, click on the **Query Compatibility** panel, and try enabling the "*Do a soft-check only..*" option.
{% endhint %}

![Soft check options, when the override feature does not work](/files/-Ly-knoxx6yyDt1v5R_Z)

## Override Method

Some information has to be sent when overriding, so the override handler knows which search instance is the override sent from, what options were selected etc.. and to store that information even when the user paginates through the results page.

There are two ways of doing that:

* **Get** (default) - the search override data is appended to the end of the URL as a query string
* **Post** - the search override data is sent as post data and stored in COOKIES during pagination

It's a matter of your preference, I recommend using the default Get method, as it does not rely on cookies at all.

## Results count per page

This should be set to the same as the number of results originally displayed on the results page!

Most themes use the system option found on the `General Options -> Reading` submenu, which is 10 by default. If you set it differently, or your theme has a different option for that, then **set this option to the same value** as well.


# Results, Archive Page and Shop Live Search and Filter

When this feature is Enabled, the plugin will try to load the results - without reloading the results page.

### Video tutorials

{% embed url="<https://youtu.be/nBiSPyG1T6o>" %}
Archive page live search and filter
{% endembed %}

{% embed url="<https://youtu.be/EXWnm171I7g>" %}
WooCommerce shop page Live Search and Filter
{% endembed %}

## Tutorial

`Search Behavior -> Search Results | Archive | Shop page Live Results`

![](/files/-L9k8_OTJ80FNY0cQyV3)

{% hint style="warning" %}
**Disclaimer:** Live loading items to a page causes the script event handlers to detach on the affected elements - if there are interactive elements (pop-up buttons etc..) controlled by a script within the results, they will probably stop working after a live load. \
This cannot be prevented from this plugins perspective.

There is **no guarantee** that this feature will work with any theme/website out there. It very highly depends on the actual website structure as well as the overall configuration.
{% endhint %}

### How to Enable the Live Loader

![](/files/ayuoaxaqmzKyIeoyqUxB)![](/files/pSAm7hb7ugFmN2V301ny)

Under the **Search Behavior -> Search | Archive | Elementor | Shop page Live Results** panel, you can choose to enable the live loader for:

* The search results page
* The taxonomy archives
* The WooCommerce shop page
* As well as an [Elementor Posts/Products widget](/elementor-integration/elementor-pro-posts-widget-live-filter) class selector

Aside from having these enabled, the proper DOM selector has to be used. Please read the documentation below on how to do that.

### Results container DOM element selector

![](/files/wL3QcmNmVYJTSNIQRHFP)

Default value: **#main**

This is the selector that the script tries to match, when the new results page is loaded via AJAX. The script then replaces the old content within this selector with the new ones.

{% hint style="warning" %}
&#x20;If you don't know what this means, then leave this options as it is by default
{% endhint %}

#### How can I find this selector for my theme?

If you are not a developer, your best bet is to ask the author of your current theme, he might know how to get the selector to target the results page container.

You can also contact us [via support](https://wp-dreams.com/go/?to=support), we might be able to help - but please note that we cannot guarantee this feature to work correctly in every case.

The only possible way is using the browser developer console or via the page source. Unfortunately there is no guide we could provide for this, as it would exceed the contents of this documentation.


# Elementor Integration

Elementor Pro Live Widget filtering and Custom Results pages

The plugin offers Elementor Pro Posts and Products widget live filtering, as well as using either widgets as a custom results page on a custom URL.

* [Loop Grid Live Search and Filter](/elementor-integration/elementor-loop-grid-integration)
* [Posts Widget Live Filter](/elementor-integration/elementor-pro-posts-widget-live-filter)
* [Product Widget Live Filter](/elementor-integration/elementor-pro-product-widget-live-filter)
* [Custom Results Page](/elementor-integration/custom-results-page-with-elementor-pro)
* [Elementor custom search page archive override and Live filter](/elementor-integration/elementor-custom-search-page-archive-override-and-live-filter)

{% embed url="<https://youtu.be/xPQe2AePosM>" %}

{% embed url="<https://www.youtube.com/watch?v=yXOo-ub_kOM>" %}


# Elementor Pro Posts Widget Live Filter

### Prerequesites

Elementor Pro is required, as unfortunately the free version does not contain the Posts widget.

* [Elementor](https://wordpress.org/plugins/elementor/)
* [Elementor Pro](https://elementor.com/pricing/)

{% embed url="<https://www.youtube.com/watch?v=yXOo-ub_kOM>" %}

## Making a WordPress page first

Under the Pages submenu, create a new page for this, which is going to be used as the host for the elementor widgets - and will act as the results page.

After creating the new page, open it with Elementor, and open your site admin panel on a new browser tab for convenience.

![Create a new page](/files/-MSI0YFe_1oAu0odwhVb)

![Edit with elementor for the next step](/files/-MTZm4iWTP6S-KtTNF_r)

{% hint style="info" %}
Theoretically any post type should work, but for the maximum compatibility, we recommend using pages for this
{% endhint %}

## Creating the search

You can create a new search instance, but use an existing one, if you have one. No special configuraion is required - any search instance will work. If you are new to the plugin, please check the [Getting Started](/getting-started) section first.

In this tutorial we are using the following configuration.

{% tabs %}
{% tab title="General Options" %}

<figure><img src="/files/1n5rhxLZtSjJW4ypbrXR" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Front #1" %}
![](/files/-M1_0duOt28SlKf4s3Fm)
{% endtab %}

{% tab title="Front #2" %}
![](/files/-M1_0duME4fJW_PLVvHU)
{% endtab %}

{% tab title="Front #3" %}
![](/files/-M1_0duNCu8Fo27kUkxv)
{% endtab %}
{% endtabs %}

## Elementor Pro posts widget page

Before starting a small text is needed - open up the search instance options, and click on the "Toggle Shortcodes for ..." text.

![](/files/-M1_TdHvrjGXPGBTx5zP)

...then copy or take note of the "Elementor Posts Widget Live Filter" input text, we will need that in a moment..

![](/files/-M1_TzuZWQJWQRS16tuE)

Once the text is copied/noted, create or open an existing page within the Elementor page editor. We are using a two-column page layout. To the left column goes the posts widget, and to the right goes the search shortcode.

Look for "posts" within the widget finder, and drag the "Posts" widget to the desired position (to the left column in our case)

{% hint style="warning" %}
Make sure to use the **Posts** widget and not the **Archive Posts** - it does not work on single pages.
{% endhint %}

![](/files/-M1_20uJ4GhUWdaKZXvq)

Open up the Posts Widget options, and navigate to the Advanced Options panel.

![](/files/-M1_SnxxVC_WCJZmePO9)

When done, look for the "shortcode" widget and drag it to position (to the right column in our case)

![](/files/-M1_2zNquauG21f0FFVD)

To the shortcode widget, enter the search shortcode, that you want to use. You can find the search shortcode under the "Ajax Search Pro" menu.

![](/files/-M1_3R_fW9FQFEP4Q_j-)

Copy and Paste the shortcode into the shortcode widget, hit "Apply" and save the page.

![](/files/-M1_42Ru8il_BV3eOz8w)

That's it! Open up the page, clear the cache, and the plugin should now actively filter the posts widget!

![](/files/-M1_WFBwxZszBSS392yZ)

## Live search Triggers

If the plugin shortcode is present on the same page as the widget, the alternative search triggers are automatically activated - these override some redirection/live search behaviours.

These override triggers can be configured on the same options panel, **General Options -> Logic & Behavior**

Please read each option hint for its exact purpose.

![](/files/-M1a-3irTbbMnhzOR6F_)


# Elementor Loop Grid Integration

Ajax Search Pro live search and filtering for Elementor Loop Grid Widget

### Prerequesites

Elementor Pro is required, as unfortunately the free version does not contain the Posts widget.

* [Elementor](https://wordpress.org/plugins/elementor/)
* [Elementor Pro](https://elementor.com/pricing/)

{% embed url="<https://www.youtube.com/watch?v=xPQe2AePosM>" %}
Elementor Loop Grid Filter and Search
{% endembed %}


# Elementor Pro Product Widget Live Filter

### Prerequesites

Elementor Pro is required, as unfortunately the free version does not contain the Posts widget.

* [Elementor](https://wordpress.org/plugins/elementor/)
* [Elementor Pro](https://elementor.com/pricing/)

## Making a WordPress page first

Under the Pages submenu, create a new page for this, which is going to be used as the host for the elementor widgets - and will act as the results page.

After creating the new page, open it with Elementor, and open your site admin panel on a new browser tab for convenience.

![Create a new page](/files/-MSI0YFe_1oAu0odwhVb)

![Edit with elementor for the next step](/files/-MTZm4iWTP6S-KtTNF_r)

{% hint style="info" %}
Theoretically any post type should work, but for the maximum compatibility, we recommend using pages for this
{% endhint %}

## Creating the search

You can create a new search instance, but use an existing one, if you have one. If you are new to the plugin, please check the [Getting Started](/getting-started) section first.

{% hint style="warning" %}
Elementor Product Widget is meant to display Products and nothing else - so no other post type or content type works, even if the search is configured to search them.
{% endhint %}

In this tutorial we are using the following configuration.

{% tabs %}
{% tab title="General Options" %}

<figure><img src="/files/q1GTUngMfCfJIYrnuubh" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Front #1" %}
![](/files/-M1_0duOt28SlKf4s3Fm)
{% endtab %}

{% tab title="Front #2" %}
![](/files/-M1_0duME4fJW_PLVvHU)
{% endtab %}

{% tab title="Front #3" %}
![](/files/-M1_aSEltw-_JERk-4X9)
{% endtab %}
{% endtabs %}

## Elementor Pro Products widget page

Before starting a small text is needed - open up the search instance options, and click on the "Toggle Shortcodes for ..." text.

![](/files/-M1_TdHvrjGXPGBTx5zP)

...then copy or take note of the "Elementor Posts Widget Live Filter" input text, we will need that in a moment..

![](/files/-M1_TzuZWQJWQRS16tuE)

Once the text is copied/noted, create or open an existing page within the Elementor page editor. We are using a two-column page layout. To the left column goes the posts widget, and to the right goes the search shortcode.

Look for "products" within the widget finder, and drag the "Products" widget to the desired position (to the left column in our case)

{% hint style="warning" %}
Make sure to use the **Products** widget and **not** the **Archive Products** - it does not work on single pages.
{% endhint %}

![](/files/-M1_b-HzHEH1oMX_c-MZ)

Open up the Posts Widget options, and navigate to the Advanced Options panel.

![](/files/-M1_cB1AX4uxvmOz4Ui5)

When done, look for the "shortcode" widget and drag it to position (to the right column in our case)

![](/files/-M1_fYlSx5Ff_U8UeJ41)

To the shortcode widget, enter the search shortcode, that you want to use. You can find the search shortcode under the "Ajax Search Pro" menu.

![](/files/-M1_3R_fW9FQFEP4Q_j-)

Copy and Paste the shortcode into the shortcode widget, hit "Apply" and save the page.

![](/files/-M1_g3JQIBaNvUofg30O)

That's it! Open up the page, clear the cache, and the plugin should now actively filter the products widget!

![](/files/-M1_h19c7Ni8det3D5s1)

## Live search Triggers

If the plugin shortcode is present on the same page as the widget, the alternative search triggers are automatically activated - these override some redirection/live search behaviours.

These override triggers can be configured on the same options panel, **General Options -> Logic & Behavior**

Please read each option hint for its exact purpose.

![](/files/-M1a-3irTbbMnhzOR6F_)


# Custom results page with Elementor Pro

Using a custom page as the results page via the Elementor Posts or Products widgets

{% embed url="<https://youtu.be/RTbxpM1af4c>" %}
Elementor Loop Grid as Results Page tutorial
{% endembed %}

### Prerequesites

Elementor Pro is required, as unfortunately the free version does not contain the Posts widget.

* [Elementor](https://wordpress.org/plugins/elementor/)
* [Elementor Pro](https://elementor.com/pricing/)

{% hint style="warning" %}
This tutorial is to make a custom single page and redirect the results from Ajax Search Pro to that page - not for customizing the existing results page.

To customize the actual results archive page, you can either use Elementor  if your theme supports it, or using a theme editor or custom coding.
{% endhint %}

## The custom results page

This works the very similarly the [Posts](/elementor-integration/elementor-pro-posts-widget-live-filter) or [Products widget live filters](/elementor-integration/elementor-pro-product-widget-live-filter). In fact, the pages from those tutorials can be used as results pages.

| Pros                     | Cons                                                                                                                                                                         |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Easy to use              | There is no "No results" text available for these widgets currently in Elementor. You can join the [request thread here](https://github.com/elementor/elementor/issues/7624) |
| Highly customizable      | Images only show up if the items have featured images                                                                                                                        |
| Has a working pagination |                                                                                                                                                                              |

### Making a WordPress page first

Under the Pages submenu, create a new page for this, which is going to be used as the host for the elementor widgets - and will act as the results page.

After creating the new page, open it with Elementor, and open your site admin panel on a new browser tab for convenience.

![Create a new page](/files/-MSI0YFe_1oAu0odwhVb)

![Edit with elementor for the next step](/files/-MSI1CglRBQIdg7e-L1W)

{% hint style="info" %}
Theoretically any post type should work, but for the maximum compatibility, we recommend using pages for this
{% endhint %}

### Elementor widget configuration

If you don't have a search bar yet, make sure to create one, you can check the basics under the [Getting Started](/getting-started) section.

Before starting a small text is needed - open up the search instance options, and click on the "Toggle Shortcodes for ..." text.

![](/files/-M1_TdHvrjGXPGBTx5zP)

...then copy or take note of the "Elementor Posts Widget Live Filter" input text, we will need that in a moment..

![](/files/-M1_TzuZWQJWQRS16tuE)

Now, go back to your Elementor editor and simply put the "Posts" or the "Products" widget to a page of your choice.

{% hint style="warning" %}
The Products widget is only capable of displaying products, nothing else - use it only if you want to display products as results.
{% endhint %}

![](/files/-M1_s4301m6GCx4r7ybg)

Open up the Posts Widget options, and navigate to the Advanced Options panel. Enter the code that was copied/noted from step 1. It should look like this: `as_es_1`

![](/files/-M1_cB1AX4uxvmOz4Ui5)

Save the page, and that is it.

### Search bar configuration

On your WordPress back-end open up the search instance options, and navigate to the **General Options -> Logic & Behavior** panel.

![](/files/-M1_wpNY-ZmClfG63TU4)

*Scroll down* until you find them Magnifier and Return button events. Then set both to "Elementor results page".

![](/files/-M1_xEj4F90mJXHA_QoH)

Then under the "Select a page with an Elementor Pro posts widget" option, search for the previously configured page, and select it.

![](/files/-M1_xXcZF94_qRj5agJD)

After the selection, the configuration should look like this.

![](/files/-M1_xf0ksXvuAMlhnn0z)

Save the search options, and it is ready for use. Placing the search shortcode to any page will automatically redirect to the results page.

### Live search Triggers

After redirection, if the plugin shortcode is present on the results page, the alternative search triggers are automatically activated - these override some redirection/live search behaviours.

These override triggers can be configured on the same options panel, **General Options -> Logic & Behavior**

Please read each option hint for its exact purpose.

![](/files/-M1a-3irTbbMnhzOR6F_)


# Elementor custom search page archive override and live filter

This tutorial shows how to override the default results page elements with Ajax Search Pro, when you have the search [results archive page template enabled with Elementor](https://docs.elementor.com/article/357-customize-the-search-results-archive).

If you wish to display the search results outside the search results archive page, then please check the [Custom results page with Elementor Pro](/elementor-integration/custom-results-page-with-elementor-pro) documentation.

## Simple override of the results

For this, only the [results page override](/behavior/results-page-override) needs to be enabled. Also make sure, that either the magnifier or the search button (or both) events [redirect to the results page](/behavior/return-key-and-magnifier-icon-click-actions).

![](/files/-M1k6NejSmT7AxQ8lw4M)

That's it, the plugin will now redirect to the results page, and override the items with it's own.

## Override with Live Loader

If you are planning to add the search bar to the results page (or already have it there), you can use the live loader feature as well.

### Elementor archive page

Open up the search results archive with the Elementor editor. In our case it was named "Search".

![](/files/-M1k95C6YN9s1wJCtCaC)

Click the archives widget, and navigate to the **Advanced** panel. Under the **CSS Classes** option enter the following:

```
asp_es_archive
```

..then save the page.

![](/files/-M1k9R9YZ-x9JMH845mK)

Great, it is almost done, only one search configuration remains.

### Search instance configuration

Go back to the search plugin back-end, to the search instance options. Under the **General Options -> Logic & Behavior** panel, scroll down to the **Results Page Live Loader** section. Turn on the Live Loader option, and to the selector field, enter the following:

```
.asp_es_archive
```

Notice the dot (.) before the text, it is required!

![](/files/-M1kAqITvbaomcVEvml7)

That's it! The plugin will now act as a results page live loader as well.

![](/files/-M1kC5-0Lb5BxJbpwoar)


# Other Integration

Other major integrations


# Jet Engine Listing Grid Integration

Crocoblock Jet Listing Grid Live Search and Filter

{% embed url="<https://youtu.be/0cGOQX1Dtbg>" %}


# Multisite Settings

On this option panel you can select the blogs you want to use, and if you want blogs titles as results in the results list.

If no blogs are selected, then the currently active blog will be used.

![Multisite Options Panel](http://i.imgur.com/L4e0hs2.png)

## Choosing which blogs to search

Under the Blogs option, there is a drag-and-drop module, which allows choosing the multisite blogs, you want to search across. By default, the currently active blog will be used.

![Choosing blogs to search within](/files/-LJZJ8Mzm_p3BUMDA6zk)

\
The plugin by default return posts and pages, so don't forget to choose the desired custom post types under the [General Options -> Sources](broken://pages/-L9jkL0OR9NWcVq8Vd3k) panel.

## Returning Multisite blogs as results

On the same panel, enabling the 'Search in blog titles?' option, will allow the plugin to return blogs as results.

![Searching Blogs as results](/files/-LJZKQn-1aOYdZXTFkxN)

## Multisite search limitations

There are a few limitations with the search engine when using a multisite installation.

* Do not use **category/term exclusions**
* Do not use **category/term selectors** on the frontend

Categories and terms with equivalent names across the multisite network have different ID's. Therefore it's not possible to properly display and exclude them.

* Custom Post Types across the network **must exist** in order to be returned. For example: Displaying WooCommerce products from Blog 1 on Blog 2, Blog 2 must also have WooCommerce installed (network installed).
* Do not use **custom field filters** on the frontend, unelss you know that the custom field exists on each site

Some custom fields might exist on one site, but not on the other. Use custom field filters only if the affected custom field exists on each site.


# Frontend Search Settings & Search Filters

With these options you can manage the **frontend search settings box** layout. By default it's turned on and many of the filters are visible.

![](http://i.imgur.com/70wwPUr.png)

*This section only affects the frontend settings filter - to actually exlude categories and include post types go to the **Advanced Options** panel and to the **General options** panel.*

* [Layout and Position](/frontend-search-settings/layout-and-position)
* [Generic filters](/frontend-search-settings/generic-selectors)
* [Date filters](https://github.com/wpdreams/ajax-search-pro-documentation/tree/4c728149805c2ecb056ae1e3d65db08f9e4697df/frontend_search_settings/date_selectors.md)
* [Category and taxonomy term filters](/frontend-search-settings/category-and-taxponomy-term-filters)
* [Post type filters](/frontend-search-settings/post-type-selectors)
* [Custom field filters](/frontend-search-settings/custom-field-selectors)
* [Search Button](/frontend-search-settings/search-button)
* [Reset Button](/frontend-search-settings/reset-button)


# Settings layout, position and visibility

```
Frontend Search Settings -> General
```

## Position

![Search settings position](/files/-Lq_V1EQDm3VWExxyLHo)

As of plugin version 3.5 the search lets you select two different layout position for the frontend settings panel:

* **Hovering** - this is the default, hovers under the settings icon
* **Block** - shows the settings integrated under the search as a block, unless it's positioned elswhere with the Custom Settings shortcode

![Hover vs Block layout difference](/files/-Lq_UkhyszZ3JvcvXWW0)

If the **Block or Custom** search settings position is selected, you can use the **Custom Setting position shortcode** to place the search settings anywhere on the page.

## Visibility

By default the search settings are hidden. Showing the settings however can be beneficial, especially in the "Block" position (see previous section).

![Search settings visibility by default](/files/-Lq_Vz1k7rG3mAR5hwzB)

Turning on the `Set search settings to visible by default?` option the search settings will be visible on the page load, without needing to click the settings icon switch.

### Displaying the search settings without the hiding switch (icon)

Showing the search settings without the option for the user to turn off is often useful, when using the "block" layout. By turning OFF the switch, turning ON the visibility and changing the layout to "block" will display a premanent settings below the search bar:

![](/files/-Lq_XLwp8agZ_XwNbtps)

..results in:

![](/files/-Lq_XViwORgQB_1u91is)


# Generic Selectors

```
Frontend Search Settings -> General
```

![](http://i.imgur.com/6ab9Rah.png)

It is possible to change the visibility and the appearing text of the very basic (generic) selectors.

The generic selectors are:

* Exact matches selector
* Search in Title selector
* Search in Content selector
* Search in Excerpt selector

![](https://i.imgur.com/Q6IJWfz.png)

To access the list, go to the `Frontent Search Settings -> General` options panel and scroll down to the **Generic Selectors** option.

To add items, drag them from the left side of the list, to remove them, simply hover over and click the red X button.

On the right side of the list, the selector *labels* and the *states* ('Checked?' checkbox) are editable.

If the **Display mode** is set to other than 'Checkboxes' (drop-down or radio), then the last 'Checked?' item is going to be the selected by default.


# Content Type filters

```
Frontent Search Settings -> Content type
```

In cases, when you need to return multiple content types as results - such as posts, users, attachments, taxonomy terms etc.. - this filter allows narrowing the results to selected content types only.

*This filter will only work for content types which are already enabled. For example: If the attachment filter is selected, but the search in attachments is disabled, then it will have no effect.*

![](https://i.imgur.com/l4MuYyl.png)

## Display Mode

Changes the layout of the overall option, by default set to 'Checkboxes'.

## List of items

Choose the items you want to use within the filter from the left side of the list to the right side.

**'Choose one/Select all' option in the list** If this option is chosen, it will always appear in the beginning of the options list. It is basically a placeholder/select all item depending on the layout:

* Checkboxes -> The option acts as a 'Select all' option
* Radio or Drop-down -> Acts as a 'Choose One' option. When selected, the filter is ignored.


# Date filters

```
Frontend Search Settings -> Date filters
```

![](https://i.imgur.com/yAllpov.png)

These options will allow filtering posts, pages (or any CPT) by **publication date**.

There are two date filter options to use:

* *Display 'Posts from date' filter* -> Any objects before this date will be excluded
* *Display 'Posts to date' filter* -> Any objects after this date will be excluded

  Either of the options can be *Disabled* or set to a *Date* or to a *Relative Date*.

## Date vs Relative date

When using the Date, the exact date must be specified to the selector. With the Relative Date, you can use a more dynamic value - such as the current date by default, as it defines a date *before the current date*. Positive values are subtracted from the current date, negative values are added to the current date.

For example, let us assume today is *10th of january 2016*. Changing the relative date to:

*  **1** year, 0 months, 0 days -> will result: 10th of january **2015**
* **-1** year, 0 months, 0 days -> will result: 10th of january **2017**
* 0 year,  **1** months,  **1** days -> will result: **9th** of **december** **2015**
* 0 year, **-1** months, **-1** days -> will result: **11th** of **february** **2016**


# Category and Taxponomy term filters

```
Frontend Search Settings -> Categories & Taxonomy Terms
```

{% embed url="<https://www.youtube.com/watch?v=LY-zlvbtP-U>" %}

On this option panel, you can choose taxonomy term filters to be displayed on the front-end.

![](http://i.imgur.com/i7ogx33.png)

## Choosing terms

First, use the `Select the taxonomy option` to select which taxonomy terms you want to use. For example, if you want post categories, choose the `post - Categories` option.

![](http://i.imgur.com/N9dsSZv.png)

You can select individual items, or the "Use all from ..." option, in which case you can define exclusions for that taxonomy - in case you want to display everything, except some items.

For example, I want to display every category except the *Uncategorized*:

![](http://i.imgur.com/ZHfd8cU.png)

## Display mode

Clicking the `Change display mode` button opens a pop-up window, where you can configure the filters layout.

![Display mode for taxonomy filters](/files/-LSxeKboZWHVQrJinhMT)

## Posts (or any CPT) with missing terms and the filter

By default, the taxonomy term filter includes items, that does not have any relation to the taxonomy terms visible in the filter.

If you prefer not showing these items instead, then you can do that by turning off the  *Show posts/CPM with empty (missing) taxonomy terms?* option under the *Frontend Search Settings -> Advanced* panel.

![Empty taxonomy terms option location](/files/-LK6tRekaudUFWabG3rs)

To better understand the difference, please check the images below.

![Results when the option is turned ON (default)](/files/-LK6vQ858mexitH9n7o1)

<br>

![Results when the option is turned OFF](/files/-LK6vlKLsX_1ySUj0rFl)

## Term logic (for checkboxes)

![Taxonomy Term logic option](/files/-LK5oBiHwakS2qCfvegE)

The term logic option determines how each checkbox is validated agains the results per each taxonomy. By default, all selected terms must match in order for the result to display.

To understand how each possible logics respond, let's consider an example.

We have 3 categories: *Actors*, *Female* and *Male*, and Posts that are associated with each category accordingly. The screenshot below shows the default state, and all of the possible results.

![All possible categories and results](/files/-LK629OgcXydjuievIj5)

### All of the selected terms should match logic (default)

![](/files/-LK66TxNl6d2BImIg0pt)

Any of the unchecked checkboxes is treated as an exclusion. Thus unchecking 'Female' will exclude anything categorized as 'Female', and the checked ones must still apply.

![Female unchecked](/files/-LK64hLljlCaBvrATFze)

![Male unchecked](/files/-LK657XY8WRJ8cmO8Bqx)

![Both Male and Female unchecked](/files/-LK65wE0nDfb7NjW1kzo)

<br>

![Actors unchecked](/files/-LK66HiRJwr7XGnMWvKX)

### At least one of the terms should match logic

This is one of the simplest logic - thus if any of the checked checkboxes match the post, it is considered as a possible result. Unchecked checkboxes are ignored.

{% hint style="warning" %}
Because with this logic *the unchecked checkboxes are ignored*, using term based inclusions on the Advanced Options -> Exclude/Include results panel is **not recommended**.
{% endhint %}

![](/files/-LK68e_9B-f_5vu2HRhb)

{% hint style="warning" %}
For example: If category **Actors** is choosen in both options (used in filter as well as on the advanced options), then unchecking the **Actors** checkbox will have **no effect,** and posts from the Actors category will be still included.
{% endhint %}

*Actors + Female* yields all results, as *Actors* match any of them. Same happens with *Actors + Male*, or even if *only Actors* is selected.

![](/files/-LK69xdtdDPfUu5Rf1i-)

\
*Female* will return all posts categorized as *Female*, even if *Actors* is not selected. Same happens with *Male*.

![Only Female selected](/files/-LK6AZvdCSvA5qsEGs_9)

### All terms must match exactly logic

This is the most strict logic, only recommended when using a small number of categories. In this case, all of the selected terms must match exactly the result terms, no overlapping/subset matches are allowed.

Selecting all categories will yield no results, as none of the results match *Actors*, *Female* and *Male* categories at the same time. Same will happend when choosing *Female + Male*.

![](/files/-LK6DfJalgIIZpVsCV0F)

\
*Actors + Female* shows anything matching both of the categories (similarly to the default logic). The same is true for *Actors + Male*.

![](/files/-LK6E6kNxtRBa2K5jC-C)

Choosing *Female* only, yields the same results.

![](/files/-LK6EXEGiV_Ze7zGQgJd)


# Post type Filters

```
Frontend Search Settings -> Post Types
```

![](/files/zrCW9xl0PoybBu5Ma6uN)

You can select and edit which custom post types you want to be selectable on the frontend.

The default state (checked or unchecked) of the custom post type checkboxes on the front end corresponds to the included post types.

### Note when using checkboxes

If a post type is included on the **Search Sources** panel, it will be **checked** on the frontend settings box.

![](/files/4vPI0lqWiNA1ok4nhiIm)![](/files/YCZEbnOjGaCVkOHOIiIc)![](/files/gbAntC7y3xpNptzrog0S)


# Custom field filters - selectors

```
Frontend Search settings -> Custom fields
```

![](http://i.imgur.com/ucsMxXM.png)

Plugin version 3.5 introduces a brand new system, that allows you to create and customize custom filters on the front end. These powerful custom filters are related to custom fields.

{% embed url="<https://www.youtube.com/watch?v=EG4JJbdDzbA>" %}

You can choose from 6 different layout types:

1. Radio buttons
2. Dropdown menu
3. Checkboxes
4. Slider (with a single handle)
5. Range slider (with two handles)
6. Date filters

These filters are useful if you for example want to create a **Price range slider** to filter your WooCommerce products by price or Checkboxes to select whether the product is on stock or not.

*You should only create one item per custom field. The items you create must have different custom field assigned.*

## How to create a custom selector?

The interface is designed to be as self-explanatory as possible. Here is a screenshot with further explanations:

![](http://i.imgur.com/cUIu4y0.png)

*Make sure that the operator corresponds with the custom field values. For numeric values use the numeric operators and for string values use the string operators.*

## Values explained

There are two ways to load the values of each filter, *statically and dynamically*. By default, there are static values, which are entered manually, but it is also possible to load all the values of the custom field from the database directly.

### Static values

As you can see, there is a wierd looking string in the **Radio values** box. (same goes for checkbox and dropdown values as well)

In this case each line represents one radio button. Each radio button must have a value and a label, so the syntax is the following:

```
value||The label string
```

or, if you want it to be selected by default, then:

```
value||The label string**
```

So it's:

* The value
* then two vertical bar characters "**||**" as separators
* then the label
* and optionally two star characters "\*\*" if you want this option to be selected by default

The default values will output the following on the frontend:

![](http://i.imgur.com/gldhQxw.png)

### Dynamic values

In this case, the option values are automatically parsed from the database, the option labels and the values are going to be the same. So, if you enter this to the values field:

```
{get_values}
```

..then all the values used with that custom field will be printed as options.

#### Parameters

Parameters can be used to narrow, exclude and change the ordering of the values.

```
{get_values checked exclude="value1, value2" post_type="any" post_status="any" order="ASC"}
```

* **checked** (no value) - when declared and using checkbox layout, the checkboxes will be checked by default. For drop-down and radio layouts will set the first value as selected.
* **exclude** - comma separated list of custom field values to be excluded from the list
* **post\_type** - comma separate list of post types to get the values from. Default: "any"
* **post\_status** - comma separate list of post types to get the values from. Default: "any"
* **order** - "ASC" or "DESC" for the field values ordering
* **is\_post\_id** - When the custom field values are references to post type object IDs (ex. The Events Calendar organizer field), the plugin will display the post title instead of the field value (number). See [this blog post](https://ajaxsearchpro.com/blog/ajax-search-pro-4-24-update-features/#is_post_id) for a visual example.

#### Examples

In case of using checkboxes, you can also define the state of the checkboxex, if you need the to be checked:

```
{get_values checked}
```

For other types (radio, drop-down etc..) the first value will be selected by default.

It is also possible to combine the dynamic values with static values. So, for example if you want to add other values manually, or perhaps a 'Choose any' option, then it is possible to do so:

```
||Choose one**
value1||Value 1
{get_values}
```

This will output a 'Choose one' and 'Value 1' options before the list of the database values.

Printing only values from published items (any post type):

```
{get_values post_status="publish"}
```

Printing only values from private items of post and page post type:

```
{get_values post_status="private" post_type="post, page"}
```

Printing values from published products in descending order:

```
{get_values post_status="publish" post_type="product" order="DESC"}
```

Printing the Organizer names from The Events Calendar Plugin on the *\_EventOrganizerID* field, using the "is\_post\_id" argument (see [this blog](https://beta.ajaxsearchpro.com/blog/ajax-search-pro-4-24-update-features/#is_post_id) for an example):

```
{get_values is_post_id=1 checked}
```

### Empty values (ignore filter)

If you wish to "ignore" a filter or to use an "Any" selection, you can leave the value field empty. In this case, the filter won't be considered in the search process. For example:

```
||Any value**
value1||Value 1
value2||Value 2
```

will produce the following output:

![](http://i.imgur.com/bBGrgGU.png)

By selecting **Any Value**, the filter will be ignored.

### Multiple values within a single option

One option may represent multiple values. In that case, the plugin will check if either of the values match (or logic), when the option is selected.

Syntax:

```
value1::value2::value3||Option Label
```

For example:

```
||Any value**
value1::value2::value3||Option 1
value4::value5||Option 2
```

When choosing *Option 1*, the plugin will check if either *value1, value2* or *value3* matches the field. When choosing *Option 2*, it checks for *value4* or *value5*.

### Option Groups (drop-down & multiselect only)

Entering a single line of text, without the '||' separator characters will result in an option group. Option Groups are unselectable values, grouping all the other values below them. Syntax:

`This is a Group`

For example:

```
||Any value**
This is Group 1
sample_value1||Sample Label 1
sample_value2||Sample Label 2
sample_value3||Sample Label 3
This is Group 2
sample_value4||Sample Label 4
sample_value5||Sample Label 5
```

will result in:

![Option Group Example](/files/-L_vXWInFG6RA6uvNPzt)

## Range Inputs

This filter prints two numeric inputs side by side, features a thousand separator and input validation.&#x20;

![](/files/96zQgbRUCr9bXAsNmWzk)

### Options

* **Min/Max Range** - this is the minimum maximum allowed input range. Any number below/above the allowed range will be automatically corrected. *When emtpy the range is automatically set.*
* **Input 1&2 Default values** - The default values for each input field. Leave them empty to display the placeholder texts.
* **Input 1&2 Placeholder text** - The placeholder hint text when the inputs are empty
* **Thousand Separator** - The thousand separator character(s)

## Slider and Range slider

More or less the Radio, Checkbox and Dropdown types are similar. However the slider and the Range slider type is a bit different. These types were intended to use with NUMERIC fields only. Moreover the Range slider type uses the BETWEEN operator.

{% hint style="info" %}
In case you need them, **WooCommerce** price field names are: \_*price, \_sale\_price, \_regular\_price*
{% endhint %}

![WooCommerce Price field example](/files/-LP_sZQ7php00-L9ESTD)

## Ordering the output

After hitting the "ADD" button you should see your item added to the right grey area:

![](http://i.imgur.com/bM3Thyx.png)

You can:

* reorder the items you have created by dragging and dropping them
* delete them by hovering over and clicking the "delete" icon
* edit them by clicking the "edit" icon


# Search button

Frontend Search Settings -> Search button

{% hint style="info" %}
This feature was added in version 4.13.1
{% endhint %}

![](/files/-LG5caRhUBGbXRdgIY_b)

The search button can be enabled to be visible on the search filters box. This button can be used as a trigger to the live search, or to redirect to the search results page.

![Search button within the filters](/files/-LG5brOgMpva1TYjuRbz)

### Functionality settings

![](/files/-LG5d5zetm1S-iwq4y_R)

This option decides what happens when the button is pressed. The supported actions are:

* Trigger live search (default)
* Redirect to the results page
* Redirect to the WooCommerce results page
* Redirect to a custom URL
* Do nothing

#### Using only the search button to trigger the search

If you wish to use only the search button as a search trigger, then you need to disable all the other ones under the *General Options -> Logics & Behaviour* panel. After disabling these triggers, only the search button will activate the search process.

![Disabling Facet and Type triggers](/files/-LG5gPCO4zAsE0GcwRTR)

### Visual settings - design & layout

![](/files/-LG5dS9k3P9cwBiaml8w)

The visual options let you change the text, alignment, colors, fonts an other button settings. Clicking on the button or the **Select a button theme** link, you can choose from pre-defined button themes as well.

![](/files/-LG5dusp32U2RvScyNUh)

### Search button position in the filters list

By default the search button is positioned as last in the filters list. It however depends on the filters layout as well.

To change the buttons position, navigate to the *Frontend Search Settings -> Advanced Menu*, where you should see a drag & drop type option. On the bottom of it, you should see the search\_button item. Dragging it will change it's position.

![](/files/-LG5etwpNvJO8Qu2Blun)

The buttons position may also be affected by the column layout. This layout can be changed on the *Frontend Search Settings -> General* panel.

![](/files/-LG5fHiwLO5t7tfRdOJP)


# Reset button

{% hint style="info" %}
This feature was added in version 4.13.1
{% endhint %}

![](/files/-M2huJ3iPIW3u3Ka5Roe)

When enabled, a Reset button is displayed within the front-end settings (filters) area.

![](/files/-M2hues1qxrum0pUC_9v)

### Functionality and Position

By default the button will reset the search settings to the default, then do nothing. With the functionality swtich, this behavior can be changed.

![](/files/-M2hv9d2jvay0VIdry8k)

The button is printed to the same block where the "Search" button is (if visible). This option lets you change if it should be before or after the search button.

![](/files/-M2hvNZnmsiVUJqpKnbG)

### Visual settings - design & layout

![](/files/-M2hwqzmj210QWPv7z2a)

The visual options let you change the text, alignment, colors, fonts an other button settings. Clicking on the button or the **Select a button theme** link, you can choose from pre-defined button themes as well.

![](/files/-M2hwvjAtcp8tGnJzHDw)

### Reset button position in the filters list <a href="#search-button-position-in-the-filters-list" id="search-button-position-in-the-filters-list"></a>

By default the reset button is positioned as last in the filters list. It however depends on the filters layout as well.

To change the buttons position, navigate to the *Frontend Search Settings -> Advanced Menu*, where you should see a drag & drop type option. On the bottom of it, you should see the search\_button item. Dragging it will change it's position.

![](https://gblobscdn.gitbook.com/assets%2F-L9jkFgNo4lpUof35gvS%2F-LG5bMQ3mSjOS2mLE7jA%2F-LG5etwpNvJO8Qu2Blun%2Fimage.png?alt=media\&token=bf4edb81-e34e-459c-a8c3-3a92eb1a3d0d)

The buttons position may also be affected by the column layout. This layout can be changed on the *Frontend Search Settings -> General* panel.

![](https://gblobscdn.gitbook.com/assets%2F-L9jkFgNo4lpUof35gvS%2F-LG5bMQ3mSjOS2mLE7jA%2F-LG5fHiwLO5t7tfRdOJP%2Fimage.png?alt=media\&token=89f73f2c-19be-46fa-8d11-6f6b4a69d298)


# Layout Settings

On the layout options page you can change the basic output and behavior the search and results box.

![](http://i.imgur.com/gTUUibC.png)

* [Result Layout Types](/layout-settings/result-layout-types)
* [Results position](/layout-settings/results-position)
* [Content, author, date and description in results](/layout-settings/content-author-date-and-description-in-results)
* [More results link](/layout-settings/more-results-link)
* [Results behavior](/layout-settings/results-behavior)
* [Search phrase highlighter](/layout-settings/search-phrase-highlighter)
* [Compact search box layout](/layout-settings/compact-search-box-layout)
* [Auto Populate - Automatic search results on page load](/layout-settings/auto-populate-automatic-search-results-on-initial-page-load)


# Result Layout Types

```
Layout options -> Results Layout -> Results layout type
```

![](http://i.imgur.com/Zy8F7Ea.png)

There are 4 possible layout types as of now:

* **Vertical** - the results will appear in a horizontal manner, under each other
* **Horizontal** - the results will appear next to each other
* **Polaroid** - the results will appear as a poloaroid stack gallery
* **Isotopic** - the results will appear in a grid style

Instead of changing this option, it is recommended to change the whole search theme under the `Theme Options` panel, and choose a theme with the pre-defined layout.

![](/files/-M2i5KDGsTb2Jv879ndO)


# Results information box

Results information box can be displayed above the results, displaying the phrase, number of results and total results

## Front-end layout

The box is displayed above the search results container.

![Information box layout on the search fron-end](/files/-LVjelXiCXXKrJIOlqxO)

## Back-end options

### Enabling the box

![Layout Options -> Results Layout & Fields](/files/-LVjeSA-fH8eHVPukXxt)

The box can be enabled on the **Layout Options -> Results layout & Fields** panel. The information box text can be set under this option, for both when a search phrase was entered, or when the phrase is empty.

It is also possible to use three built-in variables, which are replaced with the corresponding values:

* {phrase} - is replaced with the search phrase
* {results\_count} - the number of results visible in the list
* {results\_count\_total} - the total number of results (useful when using the [more results](/layout-settings/more-results-link) feature)

### Styling the box

![Theme & Styling -> Results Info Box](/files/-LVjgl6aVT0-lvktoLU4)

The box can be styled under the **Theme & Styling -> Result Info Box** panel.


# Results position & snap

```
Layout options -> Results Layout -> Results layout position
```

![Results layout position](/files/-LbbXVJPOWHWiEpN2kgX)

* **Hovering** - will hover over the content just underneath the search box, same width as the search box
* **Blocking** - depending wether the results shortcode is on the current page, it will show the results in a blocking way, meaining it pushes down the content (if any available)

*If the results shortcode is used, the results position is automatically set to **Blocking**.*

### Results snapping

{% hint style="info" %}
This option only affects the Hover layout
{% endhint %}

Because the results container width can be different from the search bar width, the results have to snap to the search bar to a certain position. With this option you can control this snapping postion.

![Results box snapping to the Left, Right and Center](/files/-LbbZ3JBs9NhCTjNbEnk)


# Content, author, date and description in results

```
Layout options -> Results Layout -> Show author in results? / Show content in results? / ...
```

![](http://i.imgur.com/9HFFZIg.png)

With these options you can enable/disable certain aspects in the results list. If you don't need the author, date, description in the results, just disable the corresponding option.

## Default search placeholder text

```
Layout options -> Results Layout -> Default search text
```

![](http://i.imgur.com/oM3TZwX.png)

By default there is no text in the search input area. You can however set it if you want to.


# More results loader and infinite scroll feature

```
Layout options -> Highlighter and Load more feature
```

![Load more results feature](/files/-LZ50KbY6a991FrcHLRz)

With these options you can enable a "More results.." link under the results box. When enabled, it loads more results when clicked.

### Possible actions

* Load more ajax results - will append more results to the end of the results list
* Redirect to the results page
* Redirect to the WooCommerce results page
* Redirect to custom URL

### Infinite scroll feature

When enabled, the plugin will load the more results automatically, when the bottom of the results list is reached, or the pagination (with isotopic layout) reaches the end.


# Results behavior

```
Layout options -> Results Behaviour
```

With these options you can change some behavioral options regarding the results window.

* Scrolling to the results list automatically after searching
* Making each element in the results area a link (clickable)
* Closing the results window when the user cliks on the document
* Showing/Hiding the close result icon
* Display text if no results are present

![](http://i.imgur.com/yIobMet.png)


# Results text keyword highlighter

Search phrase highlighting in the live results list & on the single result page

```
Layout options -> Results Behaviour -> Highlighter and More features
```

## Live results list highlighting

![](/files/-MGguzl96CSyLqdB_fkF)

It is possible to highlight the search phrase in the **live results** list. Within these options you can change the:

* Highlighter text color and background
* and to highlight whole words or partial words as well

## Single result page keyword highlighting

{% hint style="warning" %}
The single result (clicking a result on the live results list) is not the same as the search results page. This feature does not work on the search results page.
{% endhint %}

![](/files/-MGgvf9zRGaLsDKMvW1r)

### Scrolling to the first keyword match

Whenever the `Scroll to the first keyword match if possible?` option is enabled, the plugin will try to scroll to the first keyword match, after redirecting to the single result.

If you want to programatically specify a part of the result page to apply the highlighter and scroll feature on, then use the `Result page content jQuery element selector` option. This is useful when the search phrase might appear outside of the post body container (in a widget, footer or menu etc..), and you want to make sure those appearances are not highlighted.


# Compact Pop-Out Search

Search icon that pops open when clicked, useful in narrow spaces, menus and sidebars.

{% embed url="<https://youtu.be/LB7oLfuBWdI>" %}

Plugin version 4.0 and later includes the compact box layout, a pop-out search icon, that slides open a search bar upon user interaction. This layout is optimal for websites with less or no widget space left.

![](http://i.imgur.com/be4UCiS.gif)

By default, this option is disabled, but you can enable it with one single click under the `Layout Options -> Compact box layout` panel..

<figure><img src="/files/zKAiTlNuwhhpXJRipY6s" alt=""><figcaption></figcaption></figure>

## Interaction

![](http://i.imgur.com/zbyw1LV.png)

With these two options you can define which events will open/close the compact search box.

* If the **Close on magnifier click** option is enabled, then none of the events associated with the magnifier icon will work. Thus it won't redirect or start a search event by clicking on it.

## Position and Size

By default the position is set to **"static"**, so it will stay inside it's parent element.

![](http://i.imgur.com/FYOpW8F.png)

If you however want to put it to the side of the page, you will need to change it to **"absolute"** or **"fixed"**.

In absolute or fixed positions it's highly advised to use a fixed width. As you can see on this option page, it's set to **"100%"** by default. Try **200px** or **300px** in absolute or fixed positions to avoid full page width search box.

![](http://i.imgur.com/QdKGkSM.png)

## Position values and z-index

![](http://i.imgur.com/5goIJjM.png)

If using **absolute or fixed** position, you can adjust the top, bottom, left and right values here.

The z-index is also adjustable here.


# Auto Populate - Automatic search results on initial page load

`Layout Options -> Search box Layout -> Auto Populate`

From version 4.8 (22. feb. 2016) the plugin supports automatic search results.

![](http://i.imgur.com/tBHFB7j.png)

By default this options is disabled.

![](http://i.imgur.com/KrQQUhj.png)

## Auto populate modes to choose from the list

* **Disabled** (default)
* **Enabled - Results for a search phrase** - You will be prompted to enter a search phrase you want to display the results for.
* **Enabled - Latest results** - Will display the latest results for an empty search phrase. The search configuration will not be ignored!

### Auto populate for an empty search phrase

This configuration will trigger the search with an empty search phrase, thus the results will be following the default [primary and secondary ordering](/general-settings/result-ordering).

![](/files/-LbbWMz6Xl5a9aCDf8oq)

## Results count

There is an additional field for results count, which is different from the non-automatic results count. It's useful if you want to display more or less results than the regular live search.

*Please keep this count **below 50**. A high results count can cause the browser to freeze or the ajax request to fail.*


# Autocomplete and Keyword suggestions

The search plugin is equipped with a powerful auto complete and keyword suggestion system.

![](http://i.imgur.com/GCe3M5z.png)

* [Autocomplete](/autocomplete-and-keyword-suggestions/autocomplete)
* [Keyword suggestions](/autocomplete-and-keyword-suggestions/keyword-suggestions)
* ["Try these" - suggested phrases](/autocomplete-and-keyword-suggestions/try-these-suggested-phrases)


# Autocomplete

```
Autocomplete & Suggestions -> Autocomplete tab
```

Autocomplete feature will try to help the user finish what is being typed into the search box.

![](http://i.imgur.com/fFDgfBG.png)

## Autocomplete Sources

Currently four different autocomplete sources are supported:

* Google keyword suggestions
* The search statistics database
* Post titles
* Post tags

![](http://i.imgur.com/0GJO96W.png)

You can multiple sources at the same time. Use the drag-and-drop box to select which sources you would like to use. **The order matters**.

The plugin will go through the selected sources (in order) until a keyword is returned.

## Maximal keyword length & exceptions

The maximal keyword length is definable, to avoid lengthy suggestions. Keywords above the defined length (60 by default) will be ignored.

![](http://i.imgur.com/hPjbd8H.png)

You can type in the keywords you don't want to see as keyword suggestions. Use comma "," as a separator.

![](http://i.imgur.com/9lwmesi.png)


# Results and Keyword suggestions

Predictive keyword and results suggestions

{% embed url="<https://youtu.be/ZhUc4hsUHFQ?si=OCqkbNb4p0mcyTwm>" %}

![](/files/L1gh5W1xofax70e4KvrM)

### Results Suggestions

Results suggestions appear when the keyword does not match any results. The plugin will get the first matching keyword from the selected sources, make a search query and if anything matches it will suggests the keyword and the resutls.

![](/files/Mv2U5ucrzFNlLxw0JqZY)![](/files/MHDQfgDs4yLxA30zF6fH)

### Keyword Suggestions

Keyword suggestions appear when no results match the keyword.

![](/files/2ZjvPSkp46XHMpTyb5L7)![](/files/AH8dEFmfwgFkoqbC20Q3)

### Suggestions sources

Currently four different keyword suggestions sources are supported:

* Google keyword suggestions
* The search statistics database
* Post titles
* Categories, tags and other Taxonomy Terms

![](http://i.imgur.com/0GJO96W.png)

You can multiple sources at the same time. Use the drag-and-drop box to select which sources you would like to use. **The order matters**.

The plugin will go through the selected sources (in order) until a keyword is returned.

### Maximal keyword length & count

The maximal keyword length is definable, to avoid lengthy suggestions. Keywords above the defined length (60 by default) will be ignored.

![](http://i.imgur.com/hPjbd8H.png)

By default the plugins shows 10 keywords, but of course you can change that if you want.

![](http://i.imgur.com/yhk0u5e.png)

### Keyword and Results Suggestion Box Styling

The styling settings can be accessed under the `Theme & Styling -> Keyword Suggestions` panel, or by clicking on the **Go to Keyword Suggestions styling options >>** link on the settings.

![](/files/wccJkSG67u0IUuzL4glz)![](/files/o8KB6FK3p1XQncMnECdH)


# "Try these" - suggested phrases

`Autocomplete & Suggestions -> Suggested search keywords`

As you might have seen on the demo, there are keywords under the search bar, which can trigger the search:

![](https://i.imgur.com/6INjMkD.png)

You can enable and change these on the `Autocomplete & Suggestions -> Suggested search keywords` panel:

![](https://i.imgur.com/H3Yhcw4.png)

On this panel you can change the *pre-fix text color*, the *keywords color*, and *enter the keywords comma separated*:

![](http://i.imgur.com/mhi57sK.png)


# Theme Options - Visual changes to the search bar

Search bar visual customization options

![First, go to the instance options](/files/-LRuivtv-JVPXqvTOYyz)

You will find many many options on this panel for almost each small aspect of the search.<br>

![](/files/-LRujArIE7TWQKUbM5_U)

Instead of going trough each option I will rather demonstrate the meaning of each option with screenshots.

* [Theme chooser](/theme-options/theme-chooser)
* [Preview](/theme-options/preview)
* [Search box and input field layout](/theme-options/search-box-and-input-field-layout)
* [Settings and Magnifier icon](/theme-options/settings-and-magnifier-icon)
* [Settings dropdown](/theme-options/settings-dropdown)
* [Typography](/theme-options/typography)


# Theme chooser

```
Theme options -> Overall box layout -> Theme chooser
```

![](http://i.imgur.com/oRvNH7t.png)

There are more than 70 themes to choose from including the ones demonstrated on the demo page. By selecting a theme the theme options will adjust to pre-defined values.

You don't need to choose any theme if you don't want to.


# Preview

On the right bottom side of the screen there is a preview slide-out window, which will help you with the customizations.

![](http://i.imgur.com/5sPgMES.png)

By clicking on the **Open** button you can open the preview window, it will refresh then automatically.

After making changes you can hit the **Refresh** button to see how the search will actuall look like.

*The loading may take up to 15 second sometimes, please be patient.*


# Search box and input field layout

```
Theme options -> Overall box layout
```

```
Theme options -> Input field layout
```

With these options you can change the overall layout of the search box and the input field. The options are explained on the following image:

![](http://i.imgur.com/mzm8sYO.png)


# Settings and Magnifier icon

```
Theme options -> Seggins icon and dropdown
```

```
Theme options -> Magnifier and loading icon
```

![](http://i.imgur.com/aDyVyWX.png)


# Settings dropdown

```
Theme options -> Seggins icon and dropdown
```

![](http://i.imgur.com/GOVMf7W.png)


# Typography

```
Theme options -> Typography
```

On the typography options panel you can change the overall font layouts for the results. With each option you can change the:

* font family
* font width: normal, bold
* font size
* and text shadow

![](http://i.imgur.com/HOi9hKi.png)


# Index Table

Index table - generating, configuring and enabling the index table

## Index Table <a href="#index-table" id="index-table"></a>

### What is the Index Table? <a href="#what-is-the-index-table" id="what-is-the-index-table"></a>

The **Index Table** is Ajax Search Pro's dedicated search engine. Instead of searching your posts directly through WordPress on every keystroke (the *Regular engine*), the plugin builds its own optimized lookup table ahead of time. Every meaningful word from your content is extracted once, cleaned up (stopwords removed, optional inflections added), and stored with per-field weighting so that searches become fast database lookups rather than expensive full-text scans.

In practice the Index Table gives you:

* **Much faster searches**, especially on large sites with thousands of posts.
* **Better relevance**, because each word carries a weight depending on where it was found (title, content, excerpt, tags, custom fields, etc.).
* **Typo tolerance and keyword suggestions** powered by the indexed vocabulary.
* **Lower server load**, since the heavy work happens once during indexing rather than on every search request.

{% embed url="<https://youtu.be/XQmrTlvQcTk>" %}
Super fast local search with Ajax Search pro
{% endembed %}

Once it's built, the index **keeps itself in sync with your content automatically** — when you add, edit or delete a post, its entry in the index is updated in the background, so everyday content changes need no action from you. A **full re-generation is only required when you change the indexing&#x20;*****settings*** (which content, post types or fields are indexed, tokenization rules, and so on). In that case the plugin shows a notification telling you a rebuild is needed.

> **Note:** This page covers indexing of posts, pages and custom post types. Indexing of media and uploaded files (PDFs, documents, etc.) is configured on the **Media & Files** tab and is covered in its own documentation.

You'll find everything below under **Ajax Search Pro → Index Table** in the WordPress admin menu.

<figure><img src="/files/j5DYhArqlTvGbbOWq2MR" alt=""><figcaption></figcaption></figure>

***

### Quick start <a href="#quick-start" id="quick-start"></a>

Setting up the Index Table takes three steps:

1. **Configure what gets indexed** — open the settings panels (General, Post Types & Filters, etc.) and choose which content and post types to include. The defaults work well for most sites, so you can usually skip straight to step 2.
2. **Generate the index** — go to the **Overview** panel and click **Create New Index**.
3. **Enable the Index table engine** on your search instance(s) — generating the index does *not* switch your searches over to it automatically. See [Enabling the Index table engine](http://localhost:63342/markdownPreview/1083710346/markdown-preview-index-jbnfkbs6eqnbjhgeohtirbfo17.html#enabling-the-index-table-engine) below.

***

### Generating the index (Overview) <a href="#generating-the-index-overview" id="generating-the-index-overview"></a>

The **Overview** panel is the control center for building and maintaining the index. At the top it shows three live stat cards:

* **Posts Indexed** — how many items are currently in the index.
* **Posts Remaining** — how many still need processing.
* **Total Keywords** — the number of unique words stored in the index.

#### The action buttons <a href="#the-action-buttons" id="the-action-buttons"></a>

* **Create New Index** — wipes any existing index and builds a fresh one from scratch. Use this for the first build, or whenever you want to rebuild everything cleanly.
* **Continue Existing** — resumes indexing from where it left off, only processing the *Posts Remaining*. Useful if a build was interrupted, or to pick up newly added posts.
* **Delete Index** — removes the entire index from the database (asks for confirmation first). Your searches will fall back to the Regular engine until you rebuild.
* **Optimize Table** — runs a database optimization on the index table to reclaim space and keep lookups fast. Worth running occasionally on large or frequently re-indexed sites.

#### While indexing runs <a href="#while-indexing-runs" id="while-indexing-runs"></a>

When you start a build, the plugin processes posts in **batches**, showing a live progress bar and percentage. The stat cards update in real time as posts are processed.

* The batch size is tuned automatically as it runs — if a batch takes too long it shrinks the next one; if batches are fast it grows them — so indexing adapts to your server without timing out.
* A **Stop** button lets you halt the process at any time. Stopping is safe: the work done so far is kept, and you can resume later with **Continue Existing**.
* Indexing keeps running even if you switch to another Index Table tab — the progress and **Stop** control stay available when you come back to the Overview.

<figure><img src="/files/fFMU22mwGqQAOzfXoY8n" alt=""><figcaption></figcaption></figure>

#### Index History chart <a href="#index-history-chart" id="index-history-chart"></a>

Once the index has a few days of history, the Overview shows an **Index History — Last 30 Days** chart, plotting how many posts were indexed and how the keyword count changed over time. Daily snapshots are recorded automatically, so this builds up on its own.

***

### Enabling the Index table engine <a href="#enabling-the-index-table-engine" id="enabling-the-index-table-engine"></a>

**This is the step that's easy to miss.** Building the index does not, by itself, make your searches use it. The Index Table is a *site-wide* index, but each search instance decides whether to use it.

For every search instance you want to speed up:

1. Open the search instance and go to **General Options → Sources**.
2. Find the **Search engine** dropdown and switch it from **Regular engine** to **Index table engine**.
3. Save the search instance.

The Index table engine only works once the index has been generated — if the index is empty, switch to it only after running **Create New Index**.

When the Index table engine is selected, some options on the instance's settings pages are disabled, because those settings are now controlled here on the Index Table page instead (for example which content and fields are searched).

<figure><img src="/files/LLZwqPtVPxvNlqEtpI13" alt=""><figcaption></figcaption></figure>

***

### Keeping the index up to date <a href="#keeping-the-index-up-to-date" id="keeping-the-index-up-to-date"></a>

There are two different situations, and it's important not to confuse them:

**Content changes — handled automatically.** When you publish, edit or delete a post, the plugin updates that post in the index for you in the background. You do **not** need to rebuild the index after normal content edits. (The Scheduling panel lets you fine-tune this automatic behavior.)

**Settings changes — require a full re-generation.** When you change an *indexing setting* on this page (which content or post types are indexed, tokenization rules, exclusions, etc.), the existing index no longer matches your configuration and must be rebuilt. The plugin makes this obvious: a banner appears at the top of the Index Table page —

<figure><img src="/files/UgyeLIDMB3ah4ASI5znH" alt=""><figcaption></figcaption></figure>

— with a shortcut link back to the Overview. From there, run **Create New Index** to apply the changes.

***

### Settings panels <a href="#settings-panels" id="settings-panels"></a>

The panels in the left-hand menu control exactly *what* gets indexed and *how*. Each panel has its own **Save** button. Remember that saving a panel only stores the configuration — you still need to rebuild the index for changes to take effect.

#### General — what content to index <a href="#general--what-content-to-index" id="general--what-content-to-index"></a>

Toggles for which parts of each post are included in the index:

* **Index title** — the post/page title.
* **Index content** — the main content body.
* **Index excerpt** — the post/page excerpt.
* **Index permalinks** — the URL slug.
* **Index author name** — the author's display name.
* **Index author bio** — the author's biographical description.

<figure><img src="/files/Db828bzvbtKjWaUygvVS" alt=""><figcaption></figcaption></figure>

#### Post Types & Filters — what to include <a href="#post-types--filters--what-to-include" id="post-types--filters--what-to-include"></a>

Defines the scope of the index:

* **Post types** — which post types to index (posts, pages, products, any custom post type).
* **Taxonomies to index** — which taxonomies to include; tags and categories are selected here too.
* **Post statuses** — which statuses to include (e.g. `publish`, `draft`, `pending`, `private`, `future`). Type a status and press Enter or comma to add it.
* **Index password-protected posts** — whether to include password-protected content.
* **Blogs to index (multisite)** — on multisite, choose which sites in the network to index.

**Taxonomy term exclusion rules**

You can exclude posts from the index based on the taxonomy terms they're assigned to. For example, exclude every product in a "Discontinued" category, or every post tagged "internal". Add one or more rules selecting a taxonomy and the terms to exclude — posts matching those terms are skipped during indexing.

<figure><img src="/files/INXhOkvcShH3C6AlrzpD" alt=""><figcaption></figcaption></figure>

#### Custom Fields — indexing meta values <a href="#custom-fields--indexing-meta-values" id="custom-fields--indexing-meta-values"></a>

* **Custom fields to index** — search for and select the meta keys whose values should be added to the index. This makes content stored in custom fields (e.g. ACF fields, product attributes) searchable.
* **Re-index on meta update** — automatically re-index a post when one of its custom field values changes. A warning is shown when this is on: on sites where plugins bulk-update meta (WooCommerce, ACF, etc.) this can trigger frequent re-indexing and impact performance, so enable it only when you need it.

**Custom field exclusion rules**

Exclude posts from the index when their custom fields meet certain conditions (combined with AND logic). For example, exclude posts where a `hide_from_search` field equals `1`, or where a `stock` field is `0`. Build one or more conditions on meta key, comparison and value.

<figure><img src="/files/cDjC6ne0XGbzN04EioMQ" alt=""><figcaption></figcaption></figure>

#### Tokenization — how words are processed <a href="#tokenization--how-words-are-processed" id="tokenization--how-words-are-processed"></a>

Controls how raw content is broken down into indexed words:

* **Use stopwords** — filter out common, low-value words (the, and, of…). When enabled, edit the **Stopwords list** to add or remove words.
* **Minimum word length** — words shorter than this are skipped (default: 1).
* **Extract iframes** — attempt to index content embedded via iframes.
* **Extract Gutenberg blocks** — index text from Gutenberg block markup.
* **Extract shortcodes** — execute shortcodes and index their rendered output. When enabled, use **Exclude shortcodes** to skip specific shortcodes by name.
* **Word inflections** — also index singular/plural forms of words for broader matching. This improves recall but **greatly increases index size**.
* **Inflections language** — the language used for stopword filtering and inflection rules.

<figure><img src="/files/gpEwJ1QgcPvWnxGgR5Ye" alt=""><figcaption></figcaption></figure>

#### Scheduling — automatic re-indexing <a href="#scheduling--automatic-re-indexing" id="scheduling--automatic-re-indexing"></a>

Fine-tune how the index keeps itself in sync with your content:

* **Re-index on post save** — keep newly published and edited posts in sync immediately as they are saved. (Edits to already-indexed posts and deletions are always reflected automatically; this option also adds brand-new posts as soon as they're published.)
* **Enable scheduled re-indexing** — run a full re-index automatically on a recurring schedule via WP-Cron. Useful as a safety net to periodically rebuild everything from scratch.
* **Cron period** — how often the scheduled re-index runs: every 2, 3, 5, 15, 30 or 60 minutes, twice daily, or daily.

<figure><img src="/files/QZvAiFLKM6fmrTq56LuA" alt=""><figcaption></figcaption></figure>

#### Performance — tuning the build <a href="#performance--tuning-the-build" id="performance--tuning-the-build"></a>

Tune how indexing behaves on your server:

* **Posts per indexing batch** — how many posts are processed per iteration. Lower this if indexing times out; raise it on fast servers to index quicker. (The Overview also auto-adjusts this while a build is running.)
* **Enable index compression** — compress indexed data to reduce database storage.
* **Auto-calculate pool size** — let the plugin tune internal pool sizes based on your post count. Disable it to set the four pool-size tiers manually (under 1,000 / 1,000–10,000 / 10,000–100,000 / over 100,000 posts).

<figure><img src="/files/TuiQS4UYMSczkZAj9Gzr" alt=""><figcaption></figcaption></figure>

***

### Indexing with WP-CLI <a href="#indexing-with-wp-cli" id="indexing-with-wp-cli"></a>

On large sites, or to automate builds outside the browser, you can run indexing from the command line with **WP-CLI** instead of the Overview buttons. This avoids browser timeouts and is ideal for scheduled server-side jobs. See the dedicated [WP-CLI documentation](https://documentation.ajaxsearchpro.com/index-table/wp-cli) for the available commands.

***

### Troubleshooting <a href="#troubleshooting" id="troubleshooting"></a>

* **My searches aren't any faster / aren't using the index.** Confirm you switched the instance's **Search engine** to **Index table engine** (see [Enabling the Index table engine](http://localhost:63342/markdownPreview/1083710346/markdown-preview-index-jbnfkbs6eqnbjhgeohtirbfo17.html#enabling-the-index-table-engine)) and that the index isn't empty.
* **New posts don't show up in search.** Edits and deletions sync automatically, but adding brand-new posts to the index on publish requires **Re-index on post save** (Scheduling panel). Enable it, or rebuild the index manually.
* **Indexing times out or stalls.** Lower **Posts per indexing batch** on the Performance panel, or use [WP-CLI](http://localhost:63342/markdownPreview/1083710346/markdown-preview-index-jbnfkbs6eqnbjhgeohtirbfo17.html#indexing-with-wp-cli) for large builds.
* **A "Re-create the index" banner is showing.** You changed an indexing setting; run **Create New Index** on the Overview to apply it.


# Using WP CLI with the Search Index

WordPress command line to generate the index in the background

The index table can be generated via the wp cli command line. For more details check the video below and the [wp asp index command synopsys in the knowledge base](https://knowledgebase.ajaxsearchpro.com/api/wp-cli-commands#index-table-commands).

{% embed url="<https://youtu.be/XQmrTlvQcTk>" %}


# File Content Search Addon

How to enable your media parser subscription via a license key

[The Media Service](https://ajaxsearchpro.com/media-service-subscription-addon/) is an external feature to handle very accurate file content indexing. Your PDF, text type & Office files are sent to one of our high performance server to extract all the text information.

{% embed url="<https://www.youtube.com/watch?v=NV8x2XhU_Vo>" %}

## License key

After purchasing a Media Parser subscription or a **Free** license key [via our shop](https://ajaxsearchpro.com/file-content-search-addon/), you should get a license key to the specified email address.

A license key will look like this:

`72c62240-42db-xxxx-aa77-00741bxxxxxx`

## Activation

### Prerequesites

For the license key to work, the index table engine has to be configured to index [media attachment contents](/general-settings/search-in-attachment-contents-pdf-word-excel-etc..).

After configuration, on the index table engine options, the **Media Parser License Key** option should be visible.

![](/files/FWfLdFeyOZRsVRnkpq6K)

Copy/Paste your license key to the input field to start the activation process.

![](/files/DI8XaZNIrOoBtt7FlvSm)

After a brief amount of time your license will be activated, indicated by a green tick.

![](/files/YRraZTXNaubUbRy2gWci)

After the activation, the license code and the "Deactivate" button should be visible, along with the usage statistics.

## Options

### Media Service File Access Method

![File Access Method](/files/kpJ806za9UOSlCoDoJeg)

The file access method determines, whether the files are directly sent to the remote server, or only the URL of the files is sent for downloading.

* *Send the files to the server (default)* - Best for **locally stored files**. The file contents are sent via a secure POST method directly to the media service server. This is **recommended**, especially for **local installations**. This **will not work**, if the files are **not stored on the local server.**
* *Send only the URL to download the file* - Best for **remotely stored files**. Only the file public download URL is sent, and the server initiates a download. This will **not work on local installations** (localhost, wamp, xampp etc..), or in cases where the files are not publicly accessible.

## FAQ

### How do I know, if a file content was indexed via the Media Service?

If the remote service was used, the contents are stored in a local custom field. On the media library screen a new text field is displayed, with the media file text contents. If that field is not visible, the file was not indexed.

![](/files/VLjSlnETlYRoiLZl4i4y) ![](/files/zEYXQgCjhWF3xs3J7hQx)

### Some of my files were not indexed, why?

The most likely reasons are:

* The file may not be accessible by the media parser. Make sure to choose the [correct method](#media-service-file-access-method) for sending the file.
* The file exceeds the maximum allowed file size of your subscription. (Free: 25MB, Starter: 50MB, Standard: 75MB, Expert and Ultimate: 100MB) Check if the file is larger as the subscription limit.
* Your subscription has reached the maximum number of allowed files this subscription period. You can verify this by opening the index table options. (the data refreshes every 5 minutes)\
  &#x20;![](/files/e9zn3guqncYWpXdgUJfT)
* The file mime type is not selected, or the file content indexing is not turned on for that file type. Please check the [media file attachment content search](/general-settings/search-in-attachment-contents-pdf-word-excel-etc..) documentation for that.

### Can I use a single license on multiple sites?

**Yes** - it is not bound to a domain. The usage is counted per license basis, it does not matter how many sites it is used on.

### When I purchase a subscription, and I already have a FREE subscription, will it automatically upgrade?

**No** - You will get a separate license key for each paid subscription. First you need to simply deactivate the free license key, and activate the paid key. Your Free license key will still be available to use any time.

## GDPR and Data Protection

The information sent to the Media Share Service servers is **not** shared **nor** sold in any way to anyone. Files are immediately deleted after the document processing is completed.

### What information is sent?

With every request to index a document, the plugin needs to send:

* The document/URL to the document (obviously) for indexing
* Your license key - to validate your request

No other additional information is sent to our servers.

### What information do we keep?

We only keep the number of queries per license key - that is needed to calculate your remaining quota. All other data is dismissed.

### Do you log any IP or other personal information, which may identify us?

No, we do not use any of that.

We use firewalls to protect our servers, just like any other server on the internet, which checks IP addresses. However that information is not associated with any personal or company data (like addresses, browsers etc..)


# Synonyms

Synonyms are exclusive to the index table engine, supporting any custom post type and media attachment contents.

{% hint style="warning" %}
**Important:** Synonyms are only supported by the **Index Table search engine**. They have **no effect** when an instance uses the standard (regular) engine. See the [Index Table documentation](https://documentation.ajaxsearchpro.com/index-table) for how to switch an instance to the Index Table engine.
{% endhint %}

You'll find it under **Ajax Search Pro → Synonyms** in the WordPress admin menu.

<figure><img src="/files/HxIfvoabv3R1i0ivevBc" alt=""><figcaption></figcaption></figure>

#### How matching works <a href="#how-matching-works" id="how-matching-works"></a>

* **Expansion is bidirectional.** A synonym group works in every direction — defining *car → automobile, vehicle* means searching for *car*, *automobile* **or** *vehicle* will match content containing any of them. You don't need to create separate entries for each direction.
* **Post/page search bakes synonyms into the index.** For regular content, synonyms are applied when the index is built, so **changing synonyms requires re-creating the index** before the change takes effect (the panel reminds you — see [Re-indexing](http://localhost:63342/markdownPreview/248252425/markdown-preview-index-4t2cp2ji7mitm0kd72lb64c8gn.html#re-indexing)).
* **Taxonomy term search expands at query time.** When searching taxonomy terms (categories, tags, etc.), synonyms are applied live per search, so those don't require a re-index.

***

### Managing synonyms <a href="#managing-synonyms" id="managing-synonyms"></a>

The **Manage** panel lists your synonym entries in a table — the **Term**, its **Synonyms** (a comma-separated list), and the **Language** — with **Edit** and **Delete** actions per row.

The toolbar across the top lets you:

* **Search** — filter the list by term.
* **Language filter** — show entries for *Any language*, *Default*, or a specific language (on multilingual sites).
* **+ Add New** — create a new synonym entry.
* **Export** / **Import** — back up or restore your synonyms (see [Import & export](#import--export)).
* **Wipe All** — delete every synonym (with confirmation).

The list is paginated (10/25/50/100 per page).

<figure><img src="/files/3DVnjRw3M16W1pZlRAep" alt=""><figcaption></figcaption></figure>

#### Adding or editing a synonym <a href="#adding-or-editing-a-synonym" id="adding-or-editing-a-synonym"></a>

Click **+ Add New** (or **Edit** on a row) to open the editor:

* **Term** — the base word or phrase.
* **Synonyms** — the equivalent words. Type each one and press **Enter** or **comma** to add it as a chip.
* **Language** — *Default*, or a specific language on multilingual sites (see [Languages](http://localhost:63342/markdownPreview/248252425/markdown-preview-index-4t2cp2ji7mitm0kd72lb64c8gn.html#languages)).

Click **Save**. Terms and synonyms are normalized automatically (lowercased, trimmed). Because expansion is bidirectional, you only list the alternatives once — no need to repeat the term inside the synonyms.

<figure><img src="/files/HwsYwsfu3QBLovR0W5bs" alt=""><figcaption></figcaption></figure>

***

### Re-indexing <a href="#re-indexing" id="re-indexing"></a>

Whenever you add, edit or delete synonyms, the post index becomes **stale** — the change won't affect post/page results until the index is rebuilt. The panel shows a warning banner when this happens:

> *"Synonyms were changed — the post index may be stale."*

with a link to the **Index Table** page. Run a new index there to apply your synonym changes. (Taxonomy term searches don't need this, since they expand synonyms at query time.)

<figure><img src="/files/O82O0M7ifZ1Ryullt5k2" alt=""><figcaption></figcaption></figure>

***

### Languages <a href="#languages" id="languages"></a>

On multilingual sites (e.g. WPML or Polylang), each synonym entry is tied to a **language**:

* **Default** — applies when no specific language context is set.
* A **specific language** — applies only to searches in that language.

Use the language filter in the toolbar to view and manage entries per language, and set the language in the editor when creating an entry. On single-language sites you can simply leave everything as *Default*.

***

### Import & export <a href="#import--export" id="import--export"></a>

* **Export** downloads all your synonyms as a JSON file (named with a timestamp), ideal for backups or moving synonyms between sites.
* **Import** uploads a synonyms file (JSON) and adds its rows to your list. After importing, the panel tells you how many rows were imported.

***

### AI Synonym Discovery <a href="#ai-synonym-discovery" id="ai-synonym-discovery"></a>

Each row (and the table in the Statistics panels) has a **Discover** button — a sparkle icon — that opens AI-suggested synonyms for that term, grounded in your own content. Click **Add** on a suggestion to apply it instantly. This is part of the [Search AI](https://documentation.ajaxsearchpro.com/search-ai) suite and requires the **AI Synonym Discovery** feature to be enabled there.

<figure><img src="/files/LuXjMiQOd9uG27I860Vr" alt=""><figcaption></figcaption></figure>

***

### Generate synonyms in bulk (AI) <a href="#generate-synonyms-in-bulk-ai" id="generate-synonyms-in-bulk-ai"></a>

Rather than discovering synonyms one term at a time, the **Generate (AI)** button in the toolbar (the sparkle icon) creates synonyms for your **most popular indexed keywords** in one pass, then lets you review and accept them together.

> **Requirements:** the **AI Synonym Discovery** feature must be enabled in [Search AI](https://documentation.ajaxsearchpro.com/search-ai), and your [Index Table](https://documentation.ajaxsearchpro.com/index-table) must be built — the candidate keywords are taken from the index.

It works in two steps:

1. **Configure** — choose how many top keywords to cover (e.g. top 25, 50 or 100) and the **language** for the suggestions, then click **Generate**. Generating for more keywords uses more of your monthly AI token budget.
2. **Review** — the suggestions appear grouped by keyword:
   * Each suggested synonym is a clickable chip; selected ones (highlighted) will be added.
   * Synonyms that are **already in your list** are shown greyed out with an "added" badge and are excluded — nothing is duplicated.
   * Keywords that **already have synonyms are still included**, so the AI can suggest *complementary* additions (marked "complements existing").
   * Click a chip to include or exclude it, then **Add selected** to apply them all at once.

Accepted synonyms are merged into your list (no duplicates), and — as with any synonym change — the post index is marked stale, so run a re-index afterward (see [Re-indexing](#re-indexing)).

<figure><img src="/files/yCpDFLvJJmhAnVHDSjln" alt=""><figcaption></figcaption></figure>

***

### Tips & notes <a href="#tips--notes" id="tips--notes"></a>

* **Switch the instance to the Index Table engine first** — synonyms do nothing on the standard engine.
* **Rebuild the index after changing synonyms** so post/page results reflect the change.
* **One entry, both directions** — you don't need reciprocal entries; expansion is bidirectional.
* **Mine your zero-result searches.** Check the [Statistics](https://documentation.ajaxsearchpro.com/search-statistics) Popular/zero-result phrases and use **Discover** to turn them into synonyms that start matching.
* **Seed a fresh site fast.** Use **Generate (AI)** to create synonyms for your top indexed keywords in one go, then review and accept — a quick head start before fine-tuning by hand.
* **Back up before bulk changes** — Export to JSON before a large import or a Wipe All.


# Relevance Options

Relevance options

Relevance modifiers change the importance of fields, based on keyword matches.

{% hint style="info" %}
The relevance formula is different for every configuration, it depends on a lot of variables. The reasons on how and why it works a certain way is out of the scope of this documentation.
{% endhint %}

## Relevance weight values

Depending if you are using the Regular (default) or Index [table engine](/index-table), the corresponding panel will be visible under the Relevance Options.

{% hint style="info" %}
Using the [index table](/index-table) engine is beneficial for most setups, as the **keyword occurence count** (how many times the phrase was found in specific field) is also considered. This is a huge advanted agains the regular engine, where this is not possible.
{% endhint %}

![Relevance for the regular engine](/files/-M2i6kybdX4naySzcW9Z)

![](/files/-M2i6v-Tcgu2nUeMpRYy)

### Exact match vs. Non-exact match relevance

Exact match relevance is calculated without examining each word in the phrase, only checking the exact phrase for occurences. Non-exact match relevance is the opposite, where each word is checked separately.

### How should you choose the relevance values?

For most cases the default configuration is perfectly fine. Please check the table below for different cases.

#### Category, tag or any other taxonomy match should be the most relevant

| Engine             | Title weight | Content weight | Excerpt weight | Terms weight | Custom f. weight | Author weight |
| ------------------ | ------------ | -------------- | -------------- | ------------ | ---------------- | ------------- |
| Regular engine     | <=5          | <=5            | <=5            | **10**       | <=2              | N/A           |
| Index Table engine | <=20         | <=20           | <=10           | >=**200**    | <=10             | <=10          |

#### A custom field value should be the most important

| Engine             | Title weight | Content weight | Excerpt weight | Terms weight | Custom f. weight | Author weight |
| ------------------ | ------------ | -------------- | -------------- | ------------ | ---------------- | ------------- |
| Regular engine     | <=5          | <=5            | <=5            | <=5          | **10**           | N/A           |
| Index Table engine | <=20         | <=20           | <=10           | <=10         | **>=200**        | <=10          |

If more than one field is much more important, then make sure to set them both to higher values.


# Search Statistics

Tracking searches, results and user interactions with built-in search statistics module

Ajax Search Pro for WordPress version 4.28.0 and later features a versatile search statistics UI, which can be used to track user searches, results, interactions, various data manipulation and exporing it to CSV files.

{% embed url="<https://youtu.be/ymNY-LoRQZQ>" %}

### Enable Search Statistics

By default the search statistics is disabled. To enable Ajax Search Pro Search Statistics:

* Navige to the *Ajax Search Pro -> Search Statistics* menu
* Click on the *Settings* tab
* Click on **Search statistics enabled** option so it is turned on
* Scroll down and *Save* the Settings

<figure><img src="/files/kgirbjmodk8Zz4BmvC1Z" alt="Search Statistics Settings"><figcaption></figcaption></figure>

### Dark Mode

This UI features a dark mode switch. We used dark mode in the screenshots of this documentation. You can turn it on/off by clicking the *Sun/Moon icon* in the top right corner of the screen. The dark/light mode is memorized, it is retained even after the browser is refreshed.

<figure><img src="/files/prVyn5uPySSZMo7gVVo0" alt="Dark Mode in Search statistics UI - Ajax Search Pro for WordPress" width="375"><figcaption></figcaption></figure>

### Realtime Statistics

Click on the Realtime tab to access the realtime statistics. Two graphs should be displayed, one showing the latest search volume in the past 60 minutes, the other the search volume in the past 24 hours.

Under the graphs a table is displayed with the latest 20 searches. The realtime stats upgrade every 5 seconds (adjustable under the Settings panel).

<figure><img src="/files/67ijbTvUGkQBKs6DIGzo" alt="Ajax Search Pro Realtime Statistics"><figcaption></figcaption></figure>

### Search Volume

The search volume displays the total number of searches per day and it can be accessed under the *Searches -> Volume* tab.

Above the bar chart there is a period (date) selection as well as a switch to turn on/off the comparision to the previous period.

Under the graph you can adjust various criteria via filters, such as the phrase, device, type, status, user interaction etc..

<div><figure><img src="/files/Ctq6QyAQTOzEER5mBEGZ" alt="Search statistics date and comparision options" width="375"><figcaption></figcaption></figure> <figure><img src="/files/bPsXGjxnLFzhtvLZAv3m" alt="" width="375"><figcaption></figcaption></figure></div>

#### Exporting data to CSV

For each view there is an *Export view* button on the top right corner of the screen. Clicking this button will open a menu to export the current view to a CSV document.

<figure><img src="/files/9VFfFvsDmePUzBySisv8" alt="Export statistics to CSV in Ajax Search Pro for WordPress" width="375"><figcaption></figcaption></figure>

### Popular Searches

The popular searches view can be accessed under the *Searches -> Popular* tab. By default it displays the most popular phrases for the given period.

Similary to the *Volume* tab, there is a date, comparision and filter area. There is also a *Field* selector before the datepicker, where you can adjust the main popularity criteria.

<div><figure><img src="/files/RHXSSRYyGC3XUAPUfaZX" alt="Popular Searches Criteria Selector in Ajax Search Pro for WordPress" width="375"><figcaption></figcaption></figure> <figure><img src="/files/nCnctwHko2Eu5aQpWhdn" alt="Popular Searches in Ajax Search Pro for WordPress plugin" width="375"><figcaption></figcaption></figure></div>

### All Searches Browser

Clicking on *Searches -> All Searches* tab will display all searches for the given period. This view lets you browser all searches for the given period filtered by various criteria.

Aside from the date selector and the filters there is an ordering option available to change the default ordering (by date descending).

<figure><img src="/files/nPjIJrXs5t27KqaYn9LS" alt="All Search Statistics Ordering in Ajax Search Pro for WordPress plugin" width="375"><figcaption></figcaption></figure>

It is also possible to load the results list for each search by clicking on the *\[Show results]* link or delete it  from the database by clicking on the *Delete* link if needed.

<figure><img src="/files/xMGINfxaA7pO7hFbRgGn" alt="Show result and delete buttons in All Searches Statistics view" width="375"><figcaption></figcaption></figure>

### Popular Results

The popular results view can be accessed under the *Results -> Popular* tab. By default it displays the most popular searches for the given period by views.

Aside from the date range and filters the popularity criteria can be adjusted. The option is before the date picker and has two possible values:

* *Views* - sorts the results by views. A view is when a result was displayed in a live result container or on the result page.
* *Interactions* - sorts the results by interactions. An interaction is a click on a result in a live result container or on the results page.

<figure><img src="/files/w6hIsie4Zimm8gDo4Gwg" alt="Result Criteria in Results Statistics - Ajax Search Pro for WordPress" width="375"><figcaption></figcaption></figure>

### All Results

This interface is similar to the [All Searches](#all-searches-browser) browser, displays all results shown to the user in all searches.

<figure><img src="/files/zK9lhNOU7WIKtxibFPmw" alt="All Results statistics browser - Ajax Search Pro for WordPress" width="375"><figcaption></figcaption></figure>

### Interactions

The interactions browser, similarly to [All Searches](#all-searches-browser) browser displays all past user interactions. Every click on a search result (live or results page) is registered as an interaction.

<figure><img src="/files/wu4VsaMejLLWekS34VUy" alt="User Interactions with Search Results in Ajax Search Pro for WordPress" width="375"><figcaption></figcaption></figure>


# Advanced Options and Uses

These options can greatly impact the layout and behavior of the search. Change them with caution.

![](http://i.imgur.com/v0N78Xh.png)

* [Shortcodes in results](/advanced-options/shortcodes-in-results)
* [HTML tags in results](/advanced-options/html-tags-in-results)
* [Advanced title and description fields](/advanced-options/advanced-title-and-description-fields)
* [Excluding categories & terms](/advanced-options/excluding-and-including-results)




---

[Next Page](/llms-full.txt/1)

