Available since: 1.6
searchwp_exclude
View Parameters »You can exclude specific post IDs on the SearchWP settings screen, but if you’d like to exclude post IDs programmatically you can do that with this filter.
Example: If you want to exclude a single a single post, add the following to your active theme’s functions.php
:
<?php | |
function my_searchwp_exclude( $ids, $engine, $terms ) | |
{ | |
$ids[] = 78; // forcefully exclude post 78 | |
return $ids; | |
} | |
add_filter( 'searchwp_exclude', 'my_searchwp_exclude', 10, 3 ); |
You can also retrieve post IDs dynamically and return those programmatically.
Example: If you want to exclude posts flagged with a taxonomy term, add the following to your active theme’s functions.php
:
<?php | |
function my_searchwp_exclude( $ids, $engine, $terms ) { | |
$entries_to_exclude = get_posts( | |
array( | |
'post_type' => 'any', | |
'nopaging' => true, | |
'fields' => 'ids', | |
'tax_query' => array( | |
array( | |
'taxonomy' => 'category', | |
'field' => 'slug', | |
'terms' => array( 'category-1' ), | |
), | |
), | |
) | |
); | |
$ids = array_unique( array_merge( $ids, array_map( 'absint', $entries_to_exclude ) ) ); | |
return $ids; | |
} | |
add_filter( 'searchwp_exclude', 'my_searchwp_exclude', 10, 3 ); |
Example: If you want to exclude an entire bbPress Forum, it’s Topics, and all Replies to those Topics add the following to your active theme’s functions.php
:
<?php | |
// exclude anything to do with Forum ID 133643 from search results in SearchWP | |
function my_exclude_private_bbpress_forum_and_children( $ids, $engine, $terms ) { | |
$forum_id = 133643; | |
// exclude Topics from that Forum | |
$topic_args = array( | |
'post_type' => 'topic', | |
'posts_per_page' => -1, | |
'fields' => 'ids', | |
'post_parent' => $forum_id, | |
'suppress_filters' => true, | |
); | |
$topic_ids = new WP_Query( $topic_args ); | |
$topic_ids = $topic_ids->posts; | |
// if there are no posts we get array( 0 => '0' ) back | |
if ( 1 == count( $topic_ids ) && $topic_ids[0] == 0 ) { | |
$topic_ids = array(); | |
} | |
// exclude Replies to those Topics | |
$reply_args = array( | |
'post_type' => 'reply', | |
'posts_per_page' => -1, | |
'fields' => 'ids', | |
'post_parent__in' => $topic_ids, | |
'suppress_filters' => true, | |
); | |
$reply_ids = new WP_Query( $reply_args ); | |
$reply_ids = $reply_ids->posts; | |
// if there are no posts we get array( 0 => '0' ) back | |
if ( 1 == count( $reply_ids ) && $reply_ids[0] == 0 ) { | |
$reply_ids = array(); | |
} | |
$ids = array_merge( $ids, array( $forum_id ), $topic_ids, $reply_ids ); | |
return $ids; | |
} | |
add_filter( 'searchwp_exclude', 'my_exclude_private_bbpress_forum_and_children', 10, 3 ); |
Parameters
Parameter | Type | Description |
---|---|---|
$ids |
Array |
Any post IDs that are considered excluded already |
$engine |
String |
The engine currently in use |
$terms |
Array |
Submitted search terms |