I have an issue with custom post types(Quiz) & search in WordPress. Custom post types are not showing in my search result page. Only the default post content is showing in my search result.
Following are the codes I used
functions.php
function create_posttype() {
register_post_type( 'compassquiz',
array(
'labels' => array(
'name' => __( 'Compass Quiz' ),
'singular_name' => __( 'Compass Quiz' )
),
'taxonomies' => array('post_tag'),
'public' => true,
'publicly_queryable' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'free-quiz-bank-exam'),
'query_var' => true,
'exclude_from_search' => false,
)
);}
add_action( 'init', 'create_posttype' );
Additional code in functions.php
//Read Custom Post types in Search
function filter_search($query) {
if ($query->is_search) {
$query->set('post_type', array('post', 'compassquiz'));
};
return $query;
};
add_filter('pre_get_posts', 'filter_search');
search.php
<?php
if ( have_posts() ) : ?>
<header class="page-header">
<h1 class="page-title">
<?php printf( esc_html__( 'Search Results for: %s', 'compass' ), '<span>' . get_search_query() . '</span>' ); ?>
</h1>
</header>
<?php
while ( have_posts() ) : the_post();
get_template_part( 'template-parts/content', 'search' );
endwhile;
the_posts_navigation();
else :
get_template_part( 'template-parts/content', 'none' );
endif;
?>
content-search.php
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<?php the_title( sprintf( '<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' ); ?>
</header>
<div class="entry-summary">
<?php
echo substr(get_the_excerpt(), 0,150) . '...';
echo ('<br><a href="' .get_permalink() . '" class="moretag">Read More »</a>');
?>
</div><!-- .entry-summary -->
</article><!-- #post-## -->
I have tried lots of code found in WP Fourm & also in other stackoverflow questions. But couldn’t find a solution that actually work.
Add this code in search form. set custom post type in hidden field value.
multiple custom post type in search form
To search for multiple custom post type, you could also duplicate the input in your search form
Tested on WordPress 5.3