I would like to know how to use the built in wordpress search to return results from all content on my site. Specifically, I want to search;
- posts
- pages
- tags
- custom post type (portfolio)
- custom taxonomy used in custom post type (skill, client)
- metaboxes used in custom post type (portfolio_caption, portfolio_excerpt, portfolio_credits, portfolio_links)
I would like one search form and don’t need to limit the search to certain post types or categories. Just enter the search term > click search > see matches from all content on my site. Simple 😉
Update: Preferably, I would achieve this through a function or custom database query rather than using a plugin. This is because I’m developing a theme and want this functionality included out of the box rather than requiring a user to download a plugin. (title changed)
3 Answers
DeluxeBlogTips.com 1) has an article on how to do combined searches in both posts and meta data. Basically, it involves two queries via the $wpdb object; one to search the meta table to get a list of post_id
s and the other is a query of posts to get post_id
s. You then merge the arrays and use that to do a query with a WP_Query
using the posts__in
argument.
Using tags may be a bit tricky because 1. tags are meant to group posts together and 2. tags and taxonomies involve 3 different tables.
1) The linked article is not completely right. It should be $keyword = "%".like_escape( $keyword )."%";
.