I'm struggling with a WordPress search function. Maybe it will just help if someone can explain to me how the built in WordPress function works. But here's what I want:

  • Two search fields, by name and by location
  • The first field should check all the common post data (only posts) + categories
  • The second field should only check on the posts custom fields
  • Only one field needs to be filled

First of all, is this even possible or do I have to use native php+sql? If it is possible, can you please give me a hint on where to start?

link|improve this question
feedback

migrated from stackoverflow.com Jan 24 '11 at 22:16

This question came from our site for professional and enthusiast programmers.

2 Answers

The built-in WP search looks only a Posts'/Pages' Title and Content, not thru other elements like Custom Fields and the content of Shortcodes. There's a number of plugs that will search Custom Fields:

http://wordpress.org/extend/plugins/wp-custom-fields-search/

http://wordpress.org/extend/plugins/search-everything/

http://wordpress.org/extend/plugins/relevanssi/

There also a filter apply_filters_ref_array() that "allows plugins to contextually add/remove/modify the search section of the database query."

FYI, the search is defined in query.php, and looks like:

...if ( !empty($q['s']) ) ... ($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}')

So title and content are the only things in the default search.

link|improve this answer
feedback

You can customize the search by making your own search template and using WP_Query. In most cases there are enough parameters to do what you want, you won't need to dive into the database.

http://codex.wordpress.org/Function_Reference/WP_Query

Example: creating a custom search template http://codex.wordpress.org/Creating_a_Search_Page

If you do need something outside of what WP_Query can do, you don't need to bust out custom php/slq you can use WordPress's WPDB class to interface with the database. http://codex.wordpress.org/Function_Reference/wpdb_Class

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.