Bp_Search_bbPress
BuddyPress Global Search – search bbPress class
Description
Source
File: bp-search/classes/class-bp-search-bbpress.php
abstract class Bp_Search_bbPress extends Bp_Search_Type {
public $type;
function sql( $search_term, $only_totalrow_count=false ){
global $wpdb;
$query_placeholder = array();
$sql = " SELECT ";
if( $only_totalrow_count ){
$sql .= " COUNT( DISTINCT id ) ";
} else {
$sql .= " DISTINCT id , '{$this->type}' as type, post_title LIKE %s AS relevance, post_date as entry_date ";
$query_placeholder[] = '%'. $search_term .'%';
}
$sql .= " FROM
{$wpdb->prefix}posts
WHERE
1=1
AND (
(
(post_title LIKE %s)
OR (post_content LIKE %s)
)
)
AND post_type = '{$this->type}'
AND post_status = 'publish'
";
$query_placeholder[] = '%'. $search_term .'%';
$query_placeholder[] = '%'. $search_term .'%';
$sql = $wpdb->prepare( $sql, $query_placeholder );
return apply_filters(
'Bp_Search_Forums_sql',
$sql,
array(
'search_term' => $search_term,
'only_totalrow_count' => $only_totalrow_count,
)
);
}
protected function generate_html( $template_type='' ){
$post_ids = array();
foreach( $this->search_results['items'] as $item_id=>$item_html ){
$post_ids[] = $item_id;
}
remove_action( 'pre_get_posts', 'bbp_pre_get_posts_normalize_forum_visibility', 4 );
//now we have all the posts
//lets do a wp_query and generate html for all posts
$qry = new WP_Query( [
'post_type' => [ 'forum', 'topic', 'reply' ],
'post__in' => $post_ids,
'post_status' => [ 'publish', 'private', 'hidden' ],
'no_found_rows' => true,
'nopaging' => true
] );
add_action( 'pre_get_posts', 'bbp_pre_get_posts_normalize_forum_visibility', 4 );
if( $qry->have_posts() ){
while( $qry->have_posts() ){
$qry->the_post();
/**
* The following will try to load loop/forum.php, loop/topic.php loop/reply.php(if reply is included).
*
*/
$result_item = array(
'id' => get_the_ID(),
'type' => $this->type,
'title' => get_the_title(),
'html' => bp_search_buffer_template_part( 'loop/' . $this->type, $template_type, false ),
);
$this->search_results['items'][get_the_ID()] = $result_item;
}
}
wp_reset_postdata();
}
}
Methods
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.