Searching the posts table
Posts Table Pro has a range of search options which make it easy for people to find items by typing a search term. Use it alone or with filters, in which people can refine the list of posts by selecting from a set of pre-defined filter options.
The plugin provides two types of search box:
- The search box which appears above the table. This loads the results instantly, without reloading the page.
- A standalone search box, which you can insert anywhere on your site (either by adding a widget or shortcode). This loads the results on a separate search results page.
It is also possible to use the Posts Table Pro layout on your sitewide search results pages. This is a developer-level task and we have provided a separate article on how to do this.
Search box above the table
By default, Posts Table Pro displays tables with a search box above the table or grid. This allows people to instantly filter the table to view items with a specific keyword or search term.
In this example, the user has typed the term "policy" into the search box. This has filtered the table to the 2 items which match that term:
There are options to change the position of the search box or hide it altogether.
Standalone search box
As well as being able to display a search box above the table, you can use a widget or shortcode to add a search box anywhere on your site (e.g. the homepage). This allows people to enter a search term before viewing the posts table.
The styling of the standalone search is inherited from the default search box which comes from WordPress and your theme. You can change the styling using custom CSS.
If your theme has a sidebar area then you can add the search widget to it:
- Go to Appearance → Widgets (or the Customizer if you prefer to edit widgets there).
- Add the 'Posts Table Pro: Search Box' widget to one of your sidebars.
- Add any or all of the following information:
- Title - The title to be displayed above the widget, e.g. "Search Articles".
- Placeholder - The watermark text which will appear inside the search field, e.g. "Search Members".
- Button Text - If required, then you can change the text which appears on the button.
The following shortcode will add a search box anywhere on your site:
You can customize the shortcode using the placeholder and button_text parameters, for example:
[ptp_search placeholder="Search resources" button_text="Search Now"]
Search results page
Posts Table Pro creates a page for displaying the search results. You can find this in the list of 'Pages' in the WordPress admin.
This search results page uses the default template from your theme. This means that if your theme's default template has a sidebar then the same sidebar will appear on the search results, otherwise it will be full-width.
The slug of this page is 'posts-search' by default. If you like, then you can change the permalink/slug to anything you like, e.g. 'search-members'.
If you are using the table layout without lazy load enabled, then the search box will search all data in the table, so users can search by category, tag, date, etc.
If you are using lazy load, then the search works differently. Instead of searching the contents of the table, the search box looks in the post title, excerpt and the full content of the post (regardless of whether these columns are actually visible in the table). This is because with these options, Posts Table Pro hasn't yet loaded all the posts - and therefore it can't search the contents of the current page. Instead, it has to use WordPress' built-in indexing function, which indexes some types of field but not others.
If you want to search by other fields then we recommend one of the following workarounds:
- Add the extra data to the title, excerpt or content fields so that it will be searchable in lazy load, grid mode and folder view.
- If you're using a lazy loaded table and want people to be able to find posts by category, tag or custom taxonomy, then you can list these as filter dropdowns instead of using the search box.
Supercharging the search box
You can make the search more advanced by using Posts Table Pro with the SearchWP plugin. This allows you to choose exactly what data is searchable, keep search analytics, search within the content of PDF documents, and more.
We have a separate article about how to do this.
Search term option
You can pre-filter the contents of the table when it is first displayed. To do this, add the
search_term option to your shortcode. E.g.
- When using lazy load, the
search_termoption will only search the post title and content - the other columns will not be searched.
- The search is case insensitive.
- As with the main WordPress search, the search is done by keyword, not individual words. So if you use
search_term="policy1", then it will match items with the name "policy1", "policy12", "Policy1 - HR", etc.
Can I link to a pre-filtered or pre-searched table?
The search box that appears above the table does not create a URL for each search term because it uses AJAX and displays results on the same page. If you wish to link to a pre-searched table then there are 2 ways to do this:
- Use the
search_termshortcode option (described above) to create a table that is pre-filtered for a specific search term.
- Generate the URL's using the standalone search box which comes with Posts Table Pro. The search results page for the standalone search box generates a unique URL for each search, so you can link to these URL's as required. This is the format for linking to a specific search term (in this case, we are doing a search for 'policy': https://yourwebsite.com/search-results/?ptp_search=policy (Note: If you have changed the slug for the search results page then you should update search-results in the URL with the new slug.)
Can I load a pre-filtered table and then allow users to expand the selection to view all posts?
Some people like to use the
search_term option to create a pre-filtered table, while giving their users the option to remove the search term and view a wider selection of posts that don't match this keyword.
This is possible if you are using the lazy load option in Posts Table Pro. Use the search term option to filter the table by a specific keyword, as described above. Your users can then delete the keyword from the search box. The table will re-load with all possible posts, including those that don't match that keyword.
Please note that this will not work if lazy load is disabled.
Can I search the contents of PDF's or documents in the table?
The search box provided by the Posts Table Pro plugin cannot search the contents of PDFs or downloadable files that you are linking to from the table. It will index the following information:
- If you are not using lazy load - The search will read the entire contents of the table, but not files that are linked from the table.
- If you are using lazy load - The search will index the title and the main content area for all the posts displayed in the table - but it can't read the content of the downloadable files.
These are our suggestions:
- Instead, of letting people search the contents of files, you can use categories, tags, or custom taxonomies to label each item with the keywords that people are likely to be searching for (you can create custom taxonomies with the free Easy Post Types and Fields plugin easily). You can then add these as filter dropdowns above the table, providing an easy way for people to find items with these keywords even though they can't search within the PDF or file download itself.
- Alternatively, use Posts Table Pro with the SearchWP plugin (see setup instructions). This allows you to search within the contents of PDF's and certain other file types.