A Participants Database Add-On providing two different configurable multiple-field search capabilities.
The Combo Multisearch Plugin offers two main search control types: a single text input (like a search engine) or a set of selectors/checkboxes/text fields that provide a search term for each field. Both search types may be used, but in most cases, you’ll be using one or the other.
Setting up the Combination Search
Combo Search provides a single-input search that will look in multiple fields for a match to a single input. Use this search type in situations where a simple easy-to-use interface is desired to search the database.
To set up the Combo Search, you’ll need the names of all the fields you want searched with the user’s input. Type the names as a comma-separated list into the “Combination Search Fields” setting. To disable the combo search, leave the setting blank.
The “label” and “placeholder” settings give you two ways to prompt the user. The “label” is shown alongside the text input, and remains visible when the user types in their search. The “placeholder” is shown inside the text input, and disappears when the user begins to type in a search. A placeholder is good when you don’t need to explain much and want a clean, simple interface. The label is good for situations where you want to explain a little bit what the search is for. You can use either, neither, or both if you want.
Combo Search Modifiers
The “combo search modifiers” are a set of radio buttons to allow the user to set the type of search desired: “any,” “all,” or “phrase.” When enabled, these radio buttons will be shown next to the combo search input. There is a default search type that will be initially selected, and this is also the search mode that will be used if the combo search modifiers are not shown.
“Autocomplete” is also known as “autosuggest” and provides the user with a list of suitable search terms. The list of suggested search terms is shown as a pop-up window when the user begins typing, and the list is pared down as the user types in more letters. The list of autosuggest words is drawn from the database, so it can reliably guide the user to search terms that will yield results. The fields that the autocomplete terms are drawn from is defined in the “Combo Search Autocomplete Fields” setting. It is a list of field names like the “combination search fields” setting. This means that the combo search can search on fields that don’t contribute to the autosuggest. This is helpful in cases where some of the fields searched contain blocks of text, which could add a lot of useless terms to the autosuggest list.
The terms that are available to the autosuggest are limited by the list shortcode filter, so data from records that are prevented from getting displayed won’t show up in the suggestion list.
Configuring the Multi Search
Multi Search provides a comprehensive interface for searching on multiple fields using a separate input for each field. This is best for situations where a precise, complex search is needed (such as a technical database) or in situations where you want to show the viewer what kind of information they can search by (for example, a services directory).
Starting with version 2.0, the multisearch fields are defined in a special interface under the “Multi Search Fields” tab in the plugin’s settings. In this new interface, each field in the multisearch can be customized in several different ways, changing how it looks, how the user may interact with it, and how it finds matches. Which options are available to a field depends on the type of field it is as defined in Participants Database.
If you already had Combo Multisearch set up and are updating from an older version, your fields will still be configured as before, only now you can fine-tune how each field works.
On this page, you configure which fields will appear in the multisearch and in what order. The display shows a list of all the fields configured for the Multi Search so you can edit the parameters of each one. You can add as many fields here as you want, you can also also delete and re-order them.
Note that fields that are included in the Combo Search configuration are not available for Multi Search; remove them from Combo Search to make them available in the “Add Field” selector.
Each field in the list of fields has its own parameters where you can change how it is presented or how it works. There are several parameters, and which ones are available to each field depends on the field type. Here is a description of the parameters:
- Label – This defaults to the normal field title, but if you want to give it a different label in the search interface, you can do that here.
- Help Text – defaults to the field’s help text, but you can choose a different help text for the search interface.
- Attributes – allows the addition of HTML element attributes, such as the “required” attribute to selectively make fields required in the search interface.
- Input Type – depending on the original field type, there will be several different ways the field can be shown in the search interface.
- Include Label in Result Summary – when checked, the field’s label will be shown along with the searched-for value in the search result summary.
- Database Values in Selector – for any kind of selector input type, instead of showing the configured field options, the options shown in the control will be drawn from the database.
- Show “Any” Option – for selector input types, enabling this shows an option that will match any value in the database: this is essentially a “reset” for the selector, removing it from the search. Uncheck this if you want to force the user to make a selection.
- “Any” Option Label – when the “any” option is shown, this is how it will be labeled. You can leave it blank for a blank option.
- Multiselect “Or” Mode – (only for multiselect input types) if this is checked, the search result can match any of the values selected, instead of needing to match all of them when using “filter” mode. This setting makes no difference when not using filter mode because the values will be treated as an “or” in that case anyway.
Multi Search Field Input Type
Some field types will have several options available for the “Input Type” selected in the Multi Search Fields interface. A text field can be shown as a text input (of course) but also as a dropdown selector that shows a list of values taken from the database entries. Dropdown fields can be shown as a dropdown or as a multiselect, giving the user the ability to select several possible matches for that field.
Determining Which Multi Search Fields are Shown
Normally, a list shortcode configured to show the Combo Multisearch control will show all the fields you have configured in the Multi Search Fields interface. It is possible to determine on a per-shortcode basis which fields will be shown in the interface, as explained in the “Showing the Search Control” section. If you want to do this, you must configure all the fields you will show in all shortcodes, and then use the “search_fields” attribute in the shortcode to determine which of the configured fields to show in that particular display. In other words, you cannot add a field in the shortcode that has not been added to the Multi Search Fields configuration.
Filter Search Mode
The Combo Multisearch has two general modes of operation: Filter Mode on or off. With filter mode “on,” all chosen search values must match the record’s values for it to be included in a search result. If filter mode is “off,” a record will be included in the results if any of the provided search terms matches the record’s values.
When filter mode is on, any multi search fields that are configured with the “multiselect or” option will only require that one of the selected values in that field is a match. With “multiselect or” deselected, all the options selected for that field in the search must match.
Each search type, combo or multi, has a “Whole Word Match Only” switch so that text searches will only match a complete word in the search, not portions of a word. For multi-search controls, this only affects text inputs where the user types in the search term.
Searching on Date Fields
“Date” type fields can be presented as a single input or as a range with two inputs.
When using a single input, the search will attempt to include all records that correspond to the entered date.
When using the ranged inputs, the range will always include the date entered for the end of the range. For example, if the range is entered as “June 1, 2020” through “June 10, 2020” records that have a date of June 10, 2020 will be included in the result.
Partial Dates Supported
When using “date” fields in multisearch, it’s possible for users to enter partial dates, such as just the year, a month and a year, or just a month. For example “2010” will return all results with dates within that year. Entries like “March 2010” would return all dates within the month of March 2010. It’s als possible to enter a month: an entry of “May” will return all records with dates that are within the month of May in the current year. Partial dates can be used with ranged searches also: for example a search of “2000” through “2010” will return all dates between 2000 and 2010, inclusive.
When using a ranged input, if one of the inputs is left blank, it is assumed to be the current date. You can override this behavior by adding “required” to the attributes setting for the date field in the multisearch fields configuration.
Returning to the Search Results
Under the General settings tab is an option to enable restoring the previous search when returning to the search page. This is convenient for users who need to navigate away from the search page and wish to return to the same page of results. If this is unchecked, the search page will be reset every time it is loaded.
Showing the Combo Multi-Search Control
The Combo Multisearch Add-On provides its search capabilities through the use of a special template. There is a template for the list display and for the stand-alone search display. Once the plugin settings are defined, the template must be called in the shortcode like this:
[pdb_list template=multisearch ]
The plugin now also includes a table-less responsive template for the list multisearch shortcode:
[pdb_list template=multisearch-responsive ]
Or for the standalone search like this:
[pdb_search template=multisearch ]
If you are using the pdb_search shortcode, be sure to read Using the Search Shortcode as it can be tricky to configure.
It is possible to define the list of multisearch fields to search in the shortcode, drawn from the list of fields configured in the mutisearch fields setup. For example:
[pdb_list template=multisearch search_fields='company,city,state']
If you have both combo and multi searches configured, the combo search will only show if “combo_search” is included in the field list.
If you want a particular shortcode to show the combo search only, you can set that up like this:
[pdb_list template=multisearch search_fields='combo_search']
It is not possible to determine which fields are included in the combo search in the shortcode due to search optimization.
Setting Up a Remote Search
If you need to have the search control in a different location then where the results are displayed, you can do that with the [pdb_search] shortcode. You need to use the “target_page” attribute to tell the search shortcode where the results are to be displayed. The [pdb_list] shortcode is used to display the results. (Check this page for more on using the search shortcode…) For example, if your results are displayed on a page named “listings” then your search control shortcode will be like this:
[pdb_search template=multisearch target_page=listings]. That shortcode can be placed anywhere. If you want to put it into a sidebar widget, you’ll need a plugin that will allow a shortcode in a widget. Then, on the “listings” page, put
[pdb_list]. There is no need to set the template to multisearch unless you want another search control to appear at the top of the results.
In cases where the
[pdb_list] shortcode is on a page with other Participants Database shortcodes, you may need to set the “target_instance” attribute to target the specific list shortcode where you want the results to appear. To find the target instance value, you must inspect the HTML. At the top of the list display, you will see a classname in the wrapper such as “pdb-instance-2” That means the list is instance 2, and you would need to put that value as the target instance in the search control shortcode, like this:
[pdb_search template=multisearch target_page=listings target_instance=2].
Can I use both the Combo Search and Multi Search at the same time?
Yes, you can, but the set of fields selected for the Combo Search Fields should be different than the fields configured in Multi Search Fields. It will still work, but the results might not be as expected because the combo search will override the multi search if both are searching on the same field.
Is it possible for the user's last used search to be restored when they return to the search page?
Yes, there is a setting under the “General” tab in the Combo Multisearch settings called “Remember the Last Search” and if checked, it will store the search parameters for the last search on the user’s browser. This means that even if they leave the site and come back later, the last search they used will still be there. If “Clear” is clicked the stored search is erased.
I want to pre-load the search terms when linking to the search page. How do I do that?
Yes, it is possible to place the search terms in the URL, and they will pre-load into the search form.
For Multi Search, each field you want to preload a search term into needs to be named and given a value. For example, you want to take the user to the search page set up to find all the brewpubs in Seattle. Your link would look something like this:
The “city” and “business_type” fields would then be filled with the vales in the URL. Of course, the fields named must be configured to appear in the Multi Search inputs.
You can do the same for the Combo Search, but there is only one field, named “combo_search” so if you wanted to do the same kind of thing as our example above, you could use a URL like this:
You’ll notice the %20 in the search term: this is code for a space, this is needed because URL’s cannot contain spaces. Take a look at this reference to learn more about using query strings in URL’s.
I want to combine Combo Multisearch with Locations Map to show search result locations in the map. How can this be done?
Right now this doesn’t work using the “auto placement” of the locations map. You can get it all working together using a custom template I’ve created a template that will do the job here:
You’ll need to download that template, and place it where Participants Database can find it. This is explained here:
Using Participants Database Custom Templates
Once that’s done, change your shortcode to something like this:
I've got a very large database, are there any problems with this plugin with large databases?
Mostly, the size of the database is not going to matter at all, MySQL is pretty efficient with large databases.
There is one setting that will be affected, that’s the “Autocomplete” feature of the Combo search. For a very large database, you could get some memory errors with this feature. Two things you can try for that problem: limit the number of of fields that are going into the autocomplete (using the “Combo Search Autocomplete Fields” setting) which will cut down on the number of terms loaded into the autosuggest. Second, if your database is realy, really large, you may need to turn autocomplete off altogether.
If you are concerned with database performance issues, it’s a good idea to tune your server for better performance. You may want to ask your web hosting provider about that, it is a fairly technical subject and requires server configurations you may not have access to.
Support Discussions for Combo Multisearch
I have your DB Participants plugin and the Combo Multi search. I am in need of someone who can configure and style the search feature. Please let me know if that is a service that you are willing to offer and the cost.
Hi, I wish I had something concrete to offer. I don’t do that kind of thing, and although I’ve tried get them, I don’t have any coder recommendations to make.
Dear xnau team,
do you have experience with Greek translations?
I’m using your plugin and for the fields I’ve added extra I need to be translated in Greek.
I put define( ‘PDB_MULTILINGUAL’, true ); in wp-config.php. But the labels of the fields are not showing.
I have in example
[:en]Type of access[:nl]Type toegang[:el]Είδος πρόσβασης.
For English and Dutch – there is no problem with displaying, but for Greek – nothing is shown.
I’ve tried to change the collation in database fields – again without success.
Can you please advise me what can cause the problem?
I also use WPML plugin for translation of the website.
I don’t know why the Greek would not show, but it could be a syntax issue with your multilingual string. There should be a [:] tag at the end of the string, like this:
[:en]Type of access[:nl]Type toegang[:el]Είδος πρόσβασης[:]
thanks for your quick response. I tried to put a [:] tag at the end of the string but still the Greek labels do not show.
Do you have any other ideas? Can you please try it yourself to see if it is OK with you, or just I have such problem.
Thanks in advance!
OK, the next thing to check is make sure the locale code is correct.
I’m using [:el] for Greek.
This is the location code WPML is using and I think it is the official one.
Where I can see the locale codes that are relevant for your plugin?
Other thing that is my mind: Can I add these fields in .pot file and then to add translations for them?
The locale code is not determined by the Participants Database plugin, this is handled by WordPress or WPML. It looks like the code you’re using is correct, but that is something that should be verified, because what you are seeing is what would happen if it was incorrect.
The translations strings in the translation files are the static strings determined by the plugin. This is completely separate from the multilingual strings we’re talking about, which are user-generated strings, for example field titles. Field titles are not found in the translation files.
Is it possible to specify the path in the pdb-searchform Form “action”?
The path generated is:
it should be:
The correct path is being generated by the ‘pagelink’ input element of the same form.
Any help would be appreciated.
This normally defaults to the WordPress permalink for the page that the search form is on. If it is not doing that, then there is probably some kind of redirect that is getting invoked. The plugin depends on WP to provide the URL, and that can be changed by other plugins. You mention the “pagelink” field is showing the correct URL, that is because that input gets its value directly from the server, so it won’t be affected by other plugins.
My suggestion is to see if you can configure the plugin that is doing the redirect to avoid changing it for the search form.
If you want to control the form’s “action” attribute directly, you need to use a custom template. The
$this->show_search_sort_form();method found in the template can be given a value to override the “action” attribute of the search form.
I can configure the permalinks, however everything else seems to be resolving perfectly.
I am already using a custom template as I wanted a linkable column in the table. Do you have a method for attributing the correct value to the $this->show_search_sort_form(); element? I was going to try changing the value using a JS function, but that all seems quite messy.
Hi again Roland,
I’ve worked around the issue like this:
$form = $('form.sort_filter_form');
$loc = window.location;
$form.attr("action", $loc );
Not an elegant solution, but it works; if you have a better option, I would be grateful.
Yes, if you cannot prevent the redirect plugin from changing the URL, you’ll have to resort to something like that. It’s not a bad solution.
I am using the multisearch in combination with the date picker add-on.
On the front end, it is displayed as:
Date – “start date selector” through “end date selector”.
As my site is not in English, the “through” word doesn’t make a lot of sense. Where can I change that in the settings?
This can be done by editing the Combo Multisearch language file for your language. If there is no language file for your language, you can create a new one. Participants Database currently only has a language file for French in addition to the US English.
To edit a language file, you need to have a PO file editor, such as Poedit. If there is no language file, you must use Poedit to create the language file using the language template included in the Combo Multisearch plugin, named
This article is about Participants Database, but the procedure for other plugins is the same: Changing the Labels or Names in Participants Database
i am having problems with the multisearch adon. The normal plugin works fine, but if i add the template=multisearch to the shortcode, when i click search, page reload, but no records are shown.
Also, in the results menu from the normal plugin, if i click in the arrows to move between the results pages, i got an error if i click exactly in the arrows. it work fine if i click in the box around the arrows, but not in the arrows.
It would be helpful if I could see the page and what it is doing.
this one have the multisearch that dont work:
this one is the normal search that works
I had done some investigation and it seems that its something conflicting with the theme (cloux), but its weird. if i change the theme to one of the wp defaults, it works. if i change back to cloux, it wooks too…..until i close the browser. after reopening it, it didnt work again, until i change again theme
If you’re using a caching or accelerator plugin, that can cause problems like this.
The links you sent can’t be opened, they are on your local machine.
ups, sorry, copy the localmachine links instead of the online ones :(
Yes, there’s no session, usually that’s because of caching, either in your WordPress or on the server.
ok. i understand ita a problem with sessions. i saw the browser message error. what i dont understan is , if the free one field search manage sessions correctly, why the multisearch template dont? it should be the same code for that.
Yes, it’s the same code, but the free search has a fallback, so it seems to work. You’ll notice that there is a page refresh when using the free search, this is because the AJAX call failed. Combo Multisearch can’t work with a fallback method, so it just fails.
I am using this on an older word press theme (2019) Any quick pointers to get this to work on 2021? Gutenberg blocks?
Also multi-search defaults to “and” function. Can it be set to “or”?
The trick to getting the plugin working with Gutenberg is to use a shortcode block to place the shortcodes. Using a paragraph block will lead to problems.
The Combo Multisearch plugin has a setting under the General Settings tab called Enable Filter Mode. When that is checked, the search terms will use “and” logic, if you uncheck that, it will use “or” logic.
I noticed when I used the multiseach template, on one of my sites (multisite) the search field never shows up.
On one of our sites, it works as intended, but when we use it on another site (in the network) it displays the table, but not the searchfield or the 3 radio button options.
Hard to say what the problem is without more information, but each site in the network will have their own independent configuration, so that would be a place to start. Another possibility is the theme or something else about that particular site is preventing the input controls from being visible.
Hi. Using the multisearch and have it in 2 different pages and trying to do 2 different multi searches using the multi search fields I have set up.
In other words, let say I have 10 fields set set in multisearch firlds, and I want 5 to be used one 1 page and 5 to be used on another page.
Is it possible to only show the 5 that I need on each page?
For example, 5 fields are related to a person’s physical attributes and 5 are related to a person’s academic qualifications. I would like a different search for each “group”.
Yo do this by adding all the fields you want in the multisearch in both forms to the multisearch configuration. Then in each shortcode, you determine which fields are shown in that instance by using the “search_fields” attribute…for example:
[pdb_list template=multisearch search_fields="last_name,city,specialty"]
Fantastic! Thanks. I was using the right shortcode but was copying the field names from the Combo Multisearch fields …. used the same field names from the Manage Database fields and hey presto.
I have been trying different settings in Combination Search but I’m unable to activate autocomplete on the frontend. Could you please let me know what should I check? Thanks!
what exactly is the problem?
autocomplete only works for the Combo search input.
When I type in the Combo search field, the autocomplete/suggestion prompt doesn’t show up.
You have no terms defined, make sure the fields you have defined for the combo search have searchable data. If you’re using the “Combo Search Autocomplete Fields” setting, make sure it is a comma-separated list of field names….must be correct, must match the names of fields that have searchable data in the database.
Thanks for the follow-up again. I tried to double-check my settings and still couldn’t get it to work
Combination Search Fields – two fields “profile” and “Keywords”
Whole Word Match Only – unchecked
Use Autocomplete For Combo Search – checked
Inline Autocomplete – unchecked
Combo Search Autocomplete – I tried both with and without specific fields
First-Letter Autocomplete – checked
Autocomplete Auto-Search – unchecked
Autocomplete Minimum Search Length – 1
When I search (such as “bread”), it will return the correct results, but no search term suggestion comes up.
What kind of fields are “profile” and “keywords”?
Both are text area. Only CSV is checked.
Autosuggest terms are not generated from text area fields, you need to use text fields or dropdowns if you want the field to be included in the autosuggest lists.
Thanks. I tried it that way and autosuggestion worked fine.
I have a setup question. For example, if I want to create 26 autosuggestions (one for each alphabet), do I need to either create 1 entry with 26 different fields for each suggestion or create 1 field and then 26 entries to cover all suggestions?
The autosuggest code is not set up to work that way, so I don’t know how you would get it to do that. What you’re suggesting won’t work, there is no way to directly control the autosuggest terms, they are automatically generated from the database.
I have the regular database and search running fine. However, when I try to switch over to the multisearch or combo multisearch templates [pdb_list template=multisearch], my list will appear and then disappear. I’m sure I have a setting wrong somewhere, but I can’t figure out what it is.
This indicates there is a technical problem with your server, specifically that “php sessions” are not working. This can be be because of the way it is configured, or for security reasons.
You can try using the “Use Alternate Session Method” setting, which is found in the Participants Database settings under the Advanced tab.
Ok, that clearly is related to the issue. It now will display the list, but if I try to do a search, it’s not returning results (I’m using terms I know are in the records) and a second search gets hung up again. Is there anything else I can do in the settings or is there something on the server I need to adjust?
The setting is the only fix you can try as far as settings are concerned. Investigating further gets pretty technical, there’s no way for me to know the specific reasons the php session is failing. It may be helpful to ask the hosting provider (or server admin) why php sessions are not working.
It might be helpful if you provided me with a link to the page you’re testing this on. You can email it if you prefer: firstname.lastname@example.org