Note: You are viewing the documentation for Version 4View Version 3 Docs

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->weight( "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;
} );
Fix keyword search on your site. No coding required!

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

Get SearchWP