bbp_has_search_results( array $args = array() )
The main search loop. WordPress does the heavy lifting.
Description Description
Parameters Parameters
- $args
-
(Optional) All the arguments supported by WP_Query
Default value: array()
Return Return
(object) Multidimensional array of search information
Source Source
File: includes/search/template.php
function bbp_has_search_results( $args = array() ) { /** Defaults **************************************************************/ $default_search_terms = bbp_get_search_terms(); $default_post_types = bbp_get_post_types(); // Default query args $default = array( 'post_type' => $default_post_types, // Forums, topics, and replies 'posts_per_page' => bbp_get_replies_per_page(), // This many 'paged' => bbp_get_paged(), // On this page 'orderby' => 'date', // Sorted by date 'order' => 'DESC', // Most recent first 'ignore_sticky_posts' => true, // Stickies not supported, // Conditionally prime the cache for last active posts 'update_post_family_cache' => true ); // Only set 's' if search terms exist // https://bbpress.trac.wordpress.org/ticket/2607 if ( false !== $default_search_terms ) { $default['s'] = $default_search_terms; } // What are the default allowed statuses (based on user caps) if ( bbp_get_view_all() ) { // Default view=all statuses $post_statuses = array_keys( bbp_get_topic_statuses() ); // Add support for private status if ( current_user_can( 'read_private_topics' ) ) { $post_statuses[] = bbp_get_private_status_id(); } // Join post statuses together $default['post_status'] = $post_statuses; // Lean on the 'perm' query var value of 'readable' to provide statuses } else { $default['perm'] = 'readable'; } /** Setup *****************************************************************/ // Parse arguments against default values $r = bbp_parse_args( $args, $default, 'has_search_results' ); // Get bbPress $bbp = bbpress(); // Only call the search query if 's' is not empty if ( ! empty( $r['s'] ) ) { $bbp->search_query = new WP_Query( $r ); } // Maybe prime last active posts if ( ! empty( $r['update_post_family_cache'] ) ) { bbp_update_post_family_caches( $bbp->search_query->posts ); } // Add pagination values to query object $bbp->search_query->posts_per_page = (int) $r['posts_per_page']; $bbp->search_query->paged = (int) $r['paged']; // Never home, regardless of what parse_query says $bbp->search_query->is_home = false; // Only add pagination is query returned results if ( ! empty( $bbp->search_query->found_posts ) && ! empty( $bbp->search_query->posts_per_page ) ) { // Total for pagination boundaries $total_pages = ( $bbp->search_query->posts_per_page === $bbp->search_query->found_posts ) ? 1 : ceil( $bbp->search_query->found_posts / $bbp->search_query->posts_per_page ); // Pagination settings with filter $bbp_search_pagination = apply_filters( 'bbp_search_results_pagination', array( 'base' => bbp_get_search_pagination_base(), 'total' => $total_pages, 'current' => $bbp->search_query->paged ) ); // Add pagination to query object $bbp->search_query->pagination_links = bbp_paginate_links( $bbp_search_pagination ); } // Filter & return return apply_filters( 'bbp_has_search_results', $bbp->search_query->have_posts(), $bbp->search_query ); }
Changelog Changelog
Version | Description |
---|---|
2.3.0 | Introduced. |