BP_Blogs_Blog::search_blogs( string $filter, int|null $limit = null, int|null $page = null )
Return a list of blogs matching a search term.
Description
Matches against blog names and descriptions, as stored in the BP blogmeta table.
Parameters
- $filter
-
(string) (Required) The search term.
- $limit
-
(int|null) (Optional) The maximum number of items to return. Default: null (no limit).
Default value: null
- $page
-
(int|null) (Optional) The page of results to return. Default: null (no limit).
Default value: null
Return
(array) Multidimensional results array, structured as follows: 'blogs' - Array of located blog objects. 'total' - A count of the total blogs matching the query.
Source
File: bp-blogs/classes/class-bp-blogs-blog.php
public static function search_blogs( $filter, $limit = null, $page = null ) { global $wpdb; $search_terms_like = '%' . bp_esc_like( $filter ) . '%'; $search_terms_sql = $wpdb->prepare( 'bm.meta_value LIKE %s', $search_terms_like ); $hidden_sql = ''; if ( !bp_current_user_can( 'bp_moderate' ) ) $hidden_sql = "AND wb.public = 1"; $pag_sql = ''; if ( $limit && $page ) { $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); } $bp = buddypress(); $paged_blogs = $wpdb->get_results( "SELECT DISTINCT bm.blog_id FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE ( ( bm.meta_key = 'name' OR bm.meta_key = 'description' ) AND {$search_terms_sql} ) {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY meta_value ASC{$pag_sql}" ); $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT bm.blog_id) FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE ( ( bm.meta_key = 'name' OR bm.meta_key = 'description' ) AND {$search_terms_sql} ) {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY meta_value ASC" ); // Integer casting. foreach ( (array) $paged_blogs as $key => $data ) { $paged_blogs[ $key ]->blog_id = (int) $paged_blogs[ $key ]->blog_id; } return array( 'blogs' => $paged_blogs, 'total' => (int) $total_blogs ); }
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.