SearchWP Documentation

View the installation guide, browse the Knowledge Base, find out about SearchWP’s many hooks

Add Weight to Entries (posts) within a Specific Category (taxonomy term)

By default SearchWP considers the actual content of taxonomy terms when performing searches. Depending on the way you’ve set up your site, you may want to give extra weight to entries regardless of taxonomy term, but instead add the weight to all entries that have been given a specific taxonomy term.

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// Add Weight to Entries (posts) within a Specific Category (taxonomy term) in SearchWP.
// @link https://searchwp.com/documentation/knowledge-base/add-weight-category-tag-term/
add_filter( 'searchwp\query\mods', function( $mods ) {
global $wpdb;
// Taxonomy bonus weight Mods.
$bonuses = [ [
'term_id' => 37, // Term ID to receive extra weight.
'weight' => 100, // How much extra weight for this term.
], [
'term_id' => 82, // Term ID to receive extra weight.
'weight' => 200, // How much extra weight for this term.
] ];
$term_mods = [];
foreach ( $bonuses as $bonus ) {
$mod = new \SearchWP\Mod();
$index_alias = $mod->get_foreign_alias();
$mod->relevance( "IF((
SELECT {$wpdb->prefix}posts.ID
FROM {$wpdb->prefix}posts
LEFT JOIN {$wpdb->prefix}term_relationships ON (
{$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id
)
WHERE {$wpdb->prefix}posts.ID = {$index_alias}.id
AND {$wpdb->prefix}term_relationships.term_taxonomy_id = {$bonus['term_id']}
LIMIT 1
) > 0, {$bonus['weight']}, 0)" );
$term_mods[] = $mod;
}
$mods = array_merge( $mods, $term_mods );
return $mods;
} );

Create a Better WordPress Search Experience Today

Never lose visitors to unhelpful search results again. SearchWP makes creating your own smart WordPress search fast and easy.

Get SearchWP Now
Multiple Search Engines Icon