Term Archive Priority

Current version: 1.1.3 View Changelog

Download available with active license

The Term Archive Priority Extension will force term archive pages to bubble to the top of search results when a match is found. This Extension only applies to supplemental search engines. Out of the box, all supplemental search engines will apply this change when the plugin is active, but you can filter that down to specific supplemental search engines by doing something like the following:

<?php
function my_maybe_include_term_archive( $include, $engine, $terms ) {
// only have term archives included for supplemental search engine with name 'supplemental'
return ( $engine == 'supplemental' ) ? true : false;
}
add_filter( 'searchwp_term_archive_enabled', 'my_maybe_include_term_archive', 10, 3 );
view raw gistfile1.php hosted with ❤ by GitHub

NOTE: by default, Term Archive Priority supports exact taxonomy term matches. If you would like to enable matching of any word within a taxonomy term, use the following filter:

<?php
add_filter( 'searchwp_tax_term_or_logic', '__return_true' );
view raw gistfile1.php hosted with ❤ by GitHub

Once activated, you will need to customize your search results loop so as to account for term archive pages in the results. This is a full theme template example outlining how to properly implement the Term Archive Priority Extension:

<?php
/* Template Name: SearchWP Custom Search */
global $post;
$query = isset( $_GET['searchwpquery'] ) ? sanitize_text_field( $_GET['searchwpquery'] ) : '';
$page = isset( $_GET['swppage'] ) ? absint( $_GET['swppage'] ) : 1;
the_post();
get_header(); ?>
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php if( !empty( $query ) ) : ?>
<header class="page-header">
<h1 class="page-title">Search Results for: <?php echo $query; ?></h1>
</header>
<?php endif; ?>
<div class="entry-content">
<form action="" method="get">
<fieldset>
<legend>Supplemental Search</legend>
<p>
<label for="searchwpquery">Search</label>
<input type="text" id="searchwpquery" name="searchwpquery" value="<?php echo esc_attr( $query ); ?>" />
</p>
<p><button type="submit">Search</button></p>
</fieldset>
</form>
</div>
<?php if( !empty( $query ) ) : ?>
<?php
$engine = SearchWP::instance(); // instatiate SearchWP
$supplementalEngineName = 'supplemental'; // search engine name
// perform the search
$posts = $engine->search( $supplementalEngineName, $query, $page );
?>
<?php if( !empty( $posts ) ) : ?>
<?php foreach( $posts as $post ) : ?>
<?php if( $post instanceof SearchWPTermResult ) : ?>
<article>
<header class="entry-header">
<h1 class="entry-title">
<a href="<?php echo $post->link; ?>" rel="bookmark"><?php echo $post->taxonomy; ?>: <?php echo $post->name; ?></a>
</h1>
</header><!-- .entry-header -->
<div class="entry-summary">
<p><?php echo $post->description; ?></p>
</div><!-- .entry-summary -->
</article>
<?php else : setup_postdata( $post ); ?>
<article>
<header class="entry-header">
<h1 class="entry-title">
<a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>
</h1>
</header><!-- .entry-header -->
<div class="entry-summary">
<?php the_excerpt(); ?>
</div><!-- .entry-summary -->
</article>
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>
<?php endif; ?>
</div><!-- #content -->
</div><!-- #primary -->
<?php
wp_reset_postdata();
get_sidebar();
get_footer();
view raw gistfile1.php hosted with ❤ by GitHub

Changelog

1.1.3

  • [Change] Empty terms are no longer ignored by default when using OR/%LIKE% matching
  • [New] New filter searchwp_term_archive_term_args to customize OR/%LIKE% arguments

1.1.2

  • [Fix] Fixed an issue with improper results containing terms spanning multiple post types
  • [Update] Updated updater

1.1.1

  • [Improvement] Better integration with LIKE Terms/Fuzzy Matches for martial term matching

1.1

  • [Improvement] Automatic updates based on your SearchWP license key

0.6

  • [Improvement] Formatting

0.5

  • [Fix] Better offset handling
  • [Fix] PHP Warning cleanup
  • [Improvement] Results now ordered by the weight of their taxonomy

0.4

  • [New] New filter searchwp_tax_term_or_logic that allows OR logic in multi-word terms

0.3

  • [Fix] Fixed an issue where disabled post types were not taken into account

0.2

  • [Fix] Fixed an issue where taxonomies were being set before custom taxonomies were registered
  • [Improvement] Consider multi-word terms

0.1

  • Initial release
Fix Search on Your Site. No Coding Required!

Now you can utilize all of the content that's gone unrecognized by native WordPress search instantly with SearchWP

Get SearchWP