Willi Mentzel
Willi Mentzel

Reputation: 29844

Customize search results for Custom Post Types

I am writing a Wordpress plug-in that creates several Custom Post Types (CPT). For they have their own custom fields, that need to be displayed in the search results, I need to customize the search results output.

Do I need to write my own theme for that or is there a hook (or other way) to solve this in my plug-in code?

Upvotes: 1

Views: 972

Answers (2)

frnhr
frnhr

Reputation: 12903

You could hook into get_the_content and get_the_excerpt filters and test with is_search() to see if you should alter the returned value or not.

Not tested, but this is the idea:

add_filter( 'get_the_excerpt', 'my_search_excerpt' );
add_filter( 'get_the_content', 'my_search_excerpt' );

function my_search_excerpt( $content ) {
    if ( is_search() ) {
        $content = 'This is a search excerpt for ' . get_the_title();
        // maybe add a read more link
        // also, you can use global $post to access the current search result
    }
    return $content;
}

Upvotes: 2

Tobias
Tobias

Reputation: 7771

I see four possibilities:

  1. Create a new (child) theme
  2. Override the search template using filters (template_include)
  3. Use client-side code to modify the appearance (CSS / JavaScript, poor workaround)
  4. Hook the_content or the_excerpt

The easiest way might be to copy the search.php file of your installed theme and modify it to fulfill your needs. You can then hook it in using the first or second way. The first requires you to create a child theme, the second to create a plugin. The latter might be more complex so I would suggest to create a theme (take a look at template files of child themes for an explanation).

Upvotes: 1

Related Questions