_bbp_has_replies_where( string $where = '', $query = false )
Used by bbp_has_replies() to add the lead topic post to the posts loop
Description
This function filters the ‘post_where’ of the WP_Query, and changes the query to include both the topic AND its children in the same loop.
Parameters
- $where
-
(Optional)
Default value: ''
Return
(string)
Source
File: bp-forums/replies/functions.php
function _bbp_has_replies_where( $where = '', $query = false ) { /** Bail ******************************************************************/ // Bail if the sky is falling if ( empty( $where ) || empty( $query ) ) { return $where; } // Bail if no post_parent to replace if ( ! is_numeric( $query->get( 'post_parent' ) ) ) { return $where; } // Bail if not a topic and reply query if ( array( bbp_get_topic_post_type(), bbp_get_reply_post_type() ) !== $query->get( 'post_type' ) ) { return $where; } // Bail if including or excluding specific post ID's if ( $query->get( 'post__not_in' ) || $query->get( 'post__in' ) ) { return $where; } /** Proceed ***************************************************************/ global $wpdb; // Table name for posts $table_name = $wpdb->prefix . 'posts'; // Get the topic ID from the post_parent, set in bbp_has_replies() $topic_id = bbp_get_topic_id( $query->get( 'post_parent' ) ); // The texts to search for $search = array( "FROM {$table_name} " , "WHERE 1=1 AND {$table_name}.post_parent = {$topic_id}" ); // The texts to replace them with $replace = array( $search[0] . "FORCE INDEX (PRIMARY, post_parent) " , "WHERE 1=1 AND ({$table_name}.ID = {$topic_id} OR {$table_name}.post_parent = {$topic_id})" ); // Try to replace the search text with the replacement $new_where = str_replace( $search, $replace, $where ); if ( ! empty( $new_where ) ) { $where = $new_where; } return $where; }
Changelog
Version | Description |
---|---|
bbPress (r4058) | Introduced. |
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.